Bonjour à tous,

J'ai commencé à me former au framework Symfony hier, et à peine commencé, je me retrouve face à une multitude d'erreurs que je n'arrive pas à comprendre.

Je travaille sur un Mac sous 10.14, avec PHP 7.4.9 installé. Après l'installation de Symfony, j'ai créé un répertoire de test que j'ai ouvert dans Visual Studio Code. J'ai envoyé la commande de création d'un projet avec le terminal, en sélectionnant bien le répertoire de mon projet avec le terminal :
symfony new --full formation


J'ai ensuite voulu créer ma première page, j'envoie alors la commande suivante :
php bin/console make:controller TestController


Le terminal me répond que mon controller à été créé avec succès :
upload/1598521517-68566-controller.png

Super ! Alors je lance le serveur symfony comme ceci :
symfony server:start

Et tout semble ok :
upload/1598521772-68566-server.png

La route de mon controller est donc "/test" :

<?php
class TestController extends AbstractController
{
    /**
     * @Route("/test", name="test")
     */
    public function index()
    {
        return $this->render('test/index.html.twig', [
            'controller_name' => 'TestController',
        ]);
    }
}


Et lorsque je me rend sur http://127.0.0.1:8000/test, j'ai une belle flopée d'erreurs comme ceci :
upload/1598521896-68566-error.png

J'aimerai bien déboguer tout ça, mais depuis hier je suis incapable de comprendre d'où vient mon erreur (et c'est la toute première fois que je manipule un framework). J'ai suivi la méthode indiquée par le formateur comme expliqué plus haut, je n'ai pas l'impression d'avoir mal créé mon projet ou mon controller...

Si vous avez une idée d'où vient mon erreur, je suis preneur d'un peu d'aide pour pouvoir avancer de mon côté, et comprendre par la même occasion Smiley smile

Merci d'avance pour votre aide !
Salut,

Bienvenue dans le monde merveilleux des frameworks ! Smiley cligne Ce genre d'erreurs va devenir ton quotidien, donc tu vas devoir apprendre à les comprendre. Le plus simple pour commencer est de faire une recherche sur un bout de l'erreur comme par exemple "instance of doctrine bundle doctrinebundle registry given". Tu trouveras souvent des références à des erreurs similaires et ce qui les provoque.

Ici, on voit des références à un changement dans le code de Doctrine suite à un changement dans le code de Symfony :
https://github.com/doctrine/DoctrineBundle/commit/43a1929fb193ce166affabfb1d7ec2763594b2ac
https://github.com/doctrine/DoctrineBundle/issues/1020

Il semble donc qu'il y ait un problème de compatibilité de versions entre Symfony et Doctrine. Quelle versions utilises-tu ?

De plus, indiquer quel cours tu suis permettrait de mieux comprendre d'où peut venir le problème.
Salut,

dans ton cas étant sur MAC il me semble que le répertoire formation/var/cache/ doit être avoir les droits en écriture (777).

Car là pour moi n'y a pas lieu que doctrine rentre en ligne de compte (pas d'utilisation de la bdd)

sinon ton "symfony serve" tu l'a bien fait au niveau de la racine de ton projet ?

sinon as-tu bien l'affichage de symfony par defaut en tapant 127.0.0.1:8000 ? tu devrais avoir une page manqué Symfony
Modifié par slamjoker (27 Aug 2020 - 14:20)
Juste une question sur la capture d'écran de controller Test ... est-elle bien entière car pour moi il manque un petit truc ici:


<?php
class TestController extends AbstractController


car normalement dans un controller (Symfony) tu as TOUJOURS un NAMESPACE et des USE ... genre ci-dessous alors que je n'en vois pas sur ta capture




<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;

class HomeController extends AbstractController
{
    /**
     * @Route("/home", name="home")
     */
    public function index()
    {
        return $this->render('home/index.html.twig', [
            'controller_name' => 'HomeController',
        ]);
    }
}



nota: autant j'adore Visaul Studio Code, mais avec un framework tel que Symfony, l'utilisation d'un IDE genre Intellij ou PHPStorm est juste recommandé
Modifié par slamjoker (27 Aug 2020 - 14:27)
Merci pour votre aide !
Je vais répondre à vos question dans l'ordre.

@Ostara
Merci pour la bienvenue ! Smiley lol J'ai effectivement recherché sur stakoverflow avant de poster, mais le jargon de Symfony m'est encore totalement inconnu pour l'instant, je galère un peu, j'en suis encore au stade où je dois comprendre comment-que-ça-marche-tout-ça Smiley sweatdrop

En tapant "symfony" dans le terminal, il me renvoie ce numéro de version :
Symfony CLI version v4.18.4 (c) 2017-2020 Symfony SAS

L'installation date d'hier, j'ai suivi la procédure depuis leur site web, je dois donc avoir la dernière version en date.

Je suis cette formation sur Udemy, j'ai pas vraiment de recul sur le contenu, car je n'en suis qu'au début, mais je complète aussi avec les formations gratuites de Grafikart (que j’apprécie beaucoup car la pratique est souvent plus concrète et adaptée au web).


@slamjoker
Merci à toi Smiley smile
Concernant le répertoire formation/var/cache/, je suis allé voir ses permissions, et les voici :
upload/1598534277-68566-capturedaeacran2020-08-27aa15.png
il semblerait que tout soit ok de ce côté là ?

Sinon, avant de taper une instruction avec le terminal, je vérifie toujours que je me trouve bien à la racine du projet. J'ai même réessayé plusieurs fois, j'ai recréé un autre projet, d'autres controller, idem Smiley decu

En allant sur 127.0.0.1:8000, j'ai bien l'affichage de symfony par défaut, ça fonctionne de ce côté là.

Et enfin, concernant mon controller Test, j'avais juste copié la classe, voici le code complet, avec le namespace et les use :
<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;

class TestController extends AbstractController
{
    /**
     * @Route("/test", name="test")
     */
    public function index()
    {
        return $this->render('test/index.html.twig', [
            'controller_name' => 'TestController',
        ]);
    }
}


Concernant l'IDE, j'ai téléchargé hier Komodo IDE (qui est gratuit actuellement, comme l'avait indiqué Niuxe). Ça le fait pour bosser avec Symfony ? Je l'ai pas encore pris en main, mais c'est l'occasion de tester un vrai IDE. Ceux que tu cites sont cher, je sais que c'est génial de bosser avec PHPStorm, mais c'est encore un peu tôt pour moi ^^

Merci encore pour votre aide Smiley smile
Alors j'ai vu un sujet presque identique et il parlait d'un problème avec Doctrine.

Pour résoudre le problème tu pourrais essayer de faire un upgrade de doctrine via composer.


composer update


Si cela ne fonctionne pas, la solution serait de changer "doctrine / doctrine-bundle": "^ 2.1" en "doctrine / doctrine-bundle": "^ 2.1.0" dans ton composer.json pour faire un downgrade sur une version de Doctrine fonctionnelle
composer install

Modifié par slamjoker (27 Aug 2020 - 15:50)
J'ai essayé, le terminal me répond alors
Nothing to install or update

Smiley decu

Edit: j'avais pas vu la suite de ton message, j'essaie ^^
Modifié par Loraga (27 Aug 2020 - 15:57)
C'est bon, c'est réglé !
Je ne sais pas comment, mais je n'avais pas les fichiers de composer dans mon projet Smiley confused et je m'en suis rendu compte grâce à ton message.

J'ai à mon avis fait n'importe quoi lors de l'installation, je ne sais pas comment je me suis débrouillé, j'ai du louper quelque chose. J'ai donc supprimé mon projet et tout repris pas à pas. Désormais tout s'affiche bien...

Désolé, le problème se situait entre la chaise et le clavier... Merci à tous les deux pour votre aide Smiley smile