Symfony3 ClassNotFoundException après la création de l'ensemble
Je voulais commencer une nouvelle 3.3 projet Symfony et a commencé comme d'habitude:
1.) La création du nouveau projet: symfony new ArtProject
2.) La création d'un nouveau Bundle: php app/console generate:bundle
(Paul/ArtBundle, yml, src/)
Puis-je exécuter le serveur local et lorsque j'ouvre 127.0.0.1:8000-je obtenir ce beau message:
(1/1) ClassNotFoundException
A tenté de charger la classe "PaulArtBundle" de l'espace de noms
"Paul\ArtBundle". Avez-vous oubliez une instruction "use" pour un autre
espace de noms? dans AppKernel.php (ligne 19)
Ce qui est étrange, et je n'ai pas compris pourquoi cela se produire à ce jour. Avant de créer le Bundle, il n'y a pas d'erreur, j'ai vu l'typiques de la page d'accueil de symfony.
public function registerBundles()
{
$bundles = [
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
......
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
new AppBundle\AppBundle(),
new Paul\ArtBundle\PaulArtBundle(),
];
}
<?php
namespace Paul\ArtBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class PaulArtBundle extends Bundle
{
}
Une idée de ce qui se passe là-bas? Je n'ai pas changé une chose, je n'ai couru à ces commandes.
- Vérifier AppKernel.php est-il correct ?
- oui, j'ai aussi pouvez sauter vers le fichier php dans mon IDE fromt il noyau
- Avez-vous bien identifié de nouveau Bundle @ Appkernel.php fichier ?
- eh bien, il est clairement un espace de noms de question d'aller quelque part, mais où ...
- J'ai ajouté de l'extrait de la AppKernel
- et juste pour s'assurer que, l'instruction d'utilisation est également au-dessus ?
- Oui
- bizarre ... essayez d'enlever complètement le cache (en fait, la suppression du dossier), essayez de vider le cache de commande, puis laissez-le compositeur de la reconstruction de votre fichier de bootstrap, si rien de tout cela contribue, redémarrez votre projet, je suppose 😉 ... je n'ai pas rencontré ce problème particulier avant ..
- En fait, j'ai aussi fait.. deux fois 😀
- L'impression de recevoir une éruption de ces questions. Vérifier l'autoload section de votre compositeur.fichier json: stackoverflow.com/questions/44928982/... Peut-être quelque chose de tordu avec la dernière version.
- Malheureusement, cela ne fonctionne pas non plus
Vous devez vous connecter pour publier un commentaire.
Je viens d'installer une nouvelle copie de S3.3.4 (dernière version en date de cette écriture) à l'aide de:
Actualisé le navigateur et bien sûr j'ai eu la classe de ne pas trouvé de message.
La commande generate:bundle n'est pas la mise à jour de la autload section de compositeur.json lorsqu'un nouvel espace de noms est introduit. Edit compositeur.json et:
Puis exécutez
Et redémarrer le serveur(peut-être). Cela devrait résoudre le bundle classe pas trouvé de problème.
Je n'ai pas utilisé la commande generate:bundle est tout à fait un certain temps depuis que la norme était de tout mettre sous AppBundle donc je ne sais pas combien de temps ça a été "cassé". Mais, au moins trois questions dans la dernière semaine ou indique qu'il a été quelque chose de récent.
Et par ailleurs, quand j'ai actualisé le navigateur que j'ai "Hello World" qui m'a jeté un peu. S'avère le nouveau bundle remplace le /la route qui est aussi spécial.
Et dans le cas où quelqu'un se demande pourquoi cela a commencé, Symfony 3.2 changé de
Vous pouvez toujours juste le changer mais je pense que l'orthographe de certains espaces de noms peut être "mieux". Pas sûr.
Et ici, c'est une question avec plus de détails: https://github.com/symfony/symfony-standard/issues/1098
Ressemble le responsable favorisé une petite amélioration de la vitesse sur la coupure d'une commande existante. Oh bien. Symfony Flex est censé faire tout ce grand encore.
composer dumpautoload
ligne qui est hors de la table pour moi comme je l'ai mentionné dans ma question, pouvez-vous indiquer une solution de contournement pour ce faire, merciSi vous générez un bundle pour utilisation dans de multiples projets (avec son propre espace de noms), vous devez l'ajouter dans la
composer.json
comme follwed:Supposons que votre nom de bundle est
CompanyFooBundle
avec l'espace de nomsCompany\Bundle\FooBundle
puis le compositeur autoload section devrait ressembler à:Cela fonctionne pour moi:
Générer votre Bundle avec
Et suivez les étapes comme toujours, maintenant, faites ce que vous voulez dans votre compositeur.fichier json avec la ligne
Remplacer avec
"": "src/"
ou ajouter votre bundle, par exemple:"BackendBundle\\": "src/BackendBundle"
Voici la nouvelle partie:
Installer compositeur dans votre répertoire bin, copier et coller les étapes de https://getcomposer.org/download/
D'un niveau dans votre répertoire de projet, et dans la racine de votre dossier (projet) exécuter la commande suivante
php ./bin/compositeur.phar update