IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Erreur FileLoaderImportCircularReferenceException dans Symfony [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 162
    Par défaut Erreur FileLoaderImportCircularReferenceException dans Symfony
    Bonjour,

    Je tombe sur une erreur et je n'arrive pas à la résoudre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FileLoaderImportCircularReferenceException in FileLoader.php line 97: Circular reference detected in "C:\Users\Stephan\Documents\essai-app\app/config/routing_dev.yml" ("C:\Users\Stephan\Documents\essai-app\app/config/routing_dev.yml" > "C:\Users\Stephan\Documents\essai-app\app/config\routing.yml" > "C:\Users\Stephan\Documents\essai-app\src\Stephan\BlogBundle/Resources/config/routing.yml" > "C:\Users\Stephan\Documents\essai-app\app/config/routing_dev.yml").
    Du coup, j'ai essayé de rendre mon code le plus court possible en enlevant des méthodes de mon controller, juste une route dans le routing et une seule vue dans Ressource/View mais l'erreur est toujours présente.

    J'ai l'impression que parfois l'erreur part mais ensuite revient.

    Pouvez vous m'aider s'il vous plaît?

    Je vous remercie par avance

    Voilà le code:

    Nom du bundle: StephanBlogBundle

    Dans src\Stephan\BlogBundle\Controller\BlogController.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <?php
     
    namespace Stephan\BlogBundle\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\Response;
     
    class BlogController extends Controller
    {
        public function essaiAction($name)
        {
            return $this->render('StephanBlogBundle:Essai:essai-test.html.twig', array('name' => $name));
        }
    }
    Dans src\Stephan\BlogBundle\Resources\config routing.yml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    exemple_essai_test:
        path:     /essai-test/{name}
        defaults: { _controller: StephanBlogBundle:Blog:essai }
    Dans app\config\routing.yml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    stephan_blog:
        resource: "@StephanBlogBundle/Resources/config/routing.yml"
        prefix:   /
     
    app:
        resource: "@AppBundle/Controller/"
        type:     annotation
    Dans app\config\routing_dev.yml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    _wdt:
        resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml"
        prefix:   /_wdt
     
    _profiler:
        resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml"
        prefix:   /_profiler
     
    _configurator:
        resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml"
        prefix:   /_configurator
     
    _errors:
        resource: "@TwigBundle/Resources/config/routing/errors.xml"
        prefix:   /_error
     
    _main:
        resource: routing.yml
    Dans src\Stephan\BlogBundle\Resources\Ressources\views\essai-test.html.twig:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h1>Un exemple de twig avec le nom: {{ name }} </h1>

  2. #2
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    HUGH ! Soit en paix mec !


    sans lire ton code, juste avec l'erreur (mais qu'est ce qu'il est trop baleze maintenant le dukoid AH AH AH)


    tu as une route dans routing.yml et routing_dev.yml qui renvois l'un vers l'autre et donc ça fait comme une boucle temporelle sans fin . pour ça faut virer soit la route dans routing.yml soit celui qui se trouve dans routing_dev.yml pour briser le circular infini

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 162
    Par défaut
    Salut Dukoid,

    Si j'avais cherché au préable en mettant en commentaire ce qui me semblait des routes en double.

    Par exemple, j'avais mis en commentaire dans app/config/routing_dev.yml le "resource routing.yml":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    _wdt:
        resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml"
        prefix:   /_wdt
     
    _profiler:
        resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml"
        prefix:   /_profiler
     
    _configurator:
        resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml"
        prefix:   /_configurator
     
    _errors:
        resource: "@TwigBundle/Resources/config/routing/errors.xml"
        prefix:   /_error
     
    _main:
    #    resource: routing.yml
    Du coup, je me retrouve quand même avec une autre erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FileLoaderImportCircularReferenceException in FileLoader.php line 97: Circular reference detected in "C:\Users\Stephan\Documents\essai-app\app/config/routing_dev.yml" ("C:\Users\Stephan\Documents\essai-app\app/config/routing_dev.yml" > "C:\Users\Stephan\Documents\essai-app\app/config/routing_dev.yml").
    Vis à vis de cette 2e erreur que j'obtiens, je me dis que maintenant le problème est dans le même fichier /app/config/routing_dev.yml

    Du coup, je ne vois pas. Dukoid, peux tu me dire comment je peux procéder à partir de cette étape là pour régler le problème?

    Je te remercie par avance,

  4. #4
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    pour routing.dev tu laisses : (c'est nécessaire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    _main:
        resource: routing.yml
    ensuite dans routing.yml
    tu as mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    stephan_blog:
        resource: "@StephanBlogBundle/Resources/config/routing.yml"
        prefix:   /
    donc tu boucles sans cesse sur lui même, tu vois ?


    pour le prefix, il faut mettre ce code dans routing.yml (et virer le truc du dessus qui fais la boucle) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    stephan_blog:
        pattern: /
        defaults:
          _controller: FrameworkBundle:Redirect:urlRedirect
          path: /monPrefix
          permanent: true

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 162
    Par défaut
    Salut Dukoid,

    J'ai remplacé le code que j'avais dans src\Stephan\BlogBundle\Resources\config\routing.yml par le code suivant comme tu m'as dit dans le poste précédent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    stephan_blog:
        pattern: /
        defaults:
            _controller: FrameworkBundle:Redirect:urlRedirect
            path: /
            permanent: true
     
    app:
        resource: "@AppBundle/Controller/"
        type:     annotation
    et j'ai remis app/config/routing_dev.yml comme c'était avant en décommentant la ligne que j'avais commenté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    _wdt:
        resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml"
        prefix:   /_wdt
     
    _profiler:
        resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml"
        prefix:   /_profiler
     
    _configurator:
        resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml"
        prefix:   /_configurator
     
    _errors:
        resource: "@TwigBundle/Resources/config/routing/errors.xml"
        prefix:   /_error
     
    _main:
        resource: routing.yml
    Par contre, cette fois j'ai une autre erreur lorsque j'essai d'accéder à "http://localhost/memo/app_dev.php/essai-test/stephan" qui est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    No route found for "GET /essai-test/stephan"
    Je rappelle les autres codes que j'avais. Dans src\Stephan\BlogBundle\Controller\BlogController.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <?php
     
    namespace Stephan\BlogBundle\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\Response;
     
    class BlogController extends Controller
    {
        public function essaiAction($name)
        {
            return $this->render('StephanBlogBundle:Essai:essai-test.html.twig', array('name' => $name));
        }
    }
    Dans src\Stephan\BlogBundle\Resources\config routing.yml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    exemple_essai_test:
        path:     /essai-test/{name}
        defaults: { _controller: StephanBlogBundle:Blog:essai }
    Dokoid, il doit peut être y avoir une erreur dans ce que j'ai changé par rapport à ce que tu m'as dit dans "src\Stephan\BlogBundle\Resources\config\routing.yml".

    Peux tu m'indiquer mon erreur, je ne vois pas.

  6. #6
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    tu as fais une confusion entre
    app/config/routing.yml
    et
    blogBundle/config/routing.yml

    je te laisse corriger le problème !


    astuce: pour afficher les routes actif de ton application
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    php app/console router:debug


    te faut un petit cours sur le routing Symfony.

    routing_dev, on va dire que c'est pour des routes qui sont utilisés uniquement en mode DEV, c'est assez rare.
    tout comme routing_prod pour quand il est en production

    généralement, on met les routes dans routing.yml.
    chaque bundle à son config (et donc ces propres routing.yml)

    mais tu as une autre solution, plutôt que d'utiliser les fichiers yaml pour déclarer tes routes (routing.yml, ...)
    tu peux les déclarer comme annotation pour chaque action du controleur.

    http://symfony.com/fr/doc/current/bu...s/routing.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    /**
     * @Route("/", defaults={"id" = 1})
     * @Route("/{id}")
     */
    public function showAction($id)
    {
    }

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 162
    Par défaut
    Salut,

    Dukoid, j'ai du faire une erreur dans le précédent message je ne pense pas que j'avais inversé.

    Au départ j'avais ça dans app/config/routing.yml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    stephan_blog:
        pattern: /
        defaults:
            _controller: FrameworkBundle:Redirect:urlRedirect
            path: /
            permanent: true
     
    app:
        resource: "@AppBundle/Controller/"
        type:     annotation
    J'avais ça dans src/Stephan/BlogBundle/Ressources/config/routing.yml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    exemple_essai_test:
        path:     /essai-test/{name}
        defaults: { _controller: StephanBlogBundle:Blog:essai }
    Voilà ce que j'ai (vers la fin) après un php app/console router:debug

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    stephan_blog             ANY    ANY    ANY  /
    homepage                 ANY    ANY    ANY  /app/example
    Après avoir inversé le contenu des fichiers src\Stephan\BlogBundle\Resources\config\routing.yml et app/config/routing.yml (je pense que ce n'est pas bon mais ça marche):

    Dans src\Stephan\BlogBundle\Resources\config\routing.yml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    stephan_blog:
        pattern: /
        defaults:
            _controller: FrameworkBundle:Redirect:urlRedirect
            path: /
            permanent: true
     
    app:
        resource: "@AppBundle/Controller/"
        type:     annotation
    Dans app/config/routing.yml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    exemple_essai_test:
        path:     /essai-test/{name}
        defaults: { _controller: StephanBlogBundle:Blog:essai }
    J'arrive bien à accéder à http://localhost/memo/app_dev.php/essai-test/stephan.

    Par contre, après un php app/console router:debug, je perd les deux lignes que j'avais lorsque je lançais cette commande avant les changements par contre, j'ai cette nouvelle ligne vers la fin:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ...
    exemple_essai_test       ANY    ANY    ANY  /essai-test/{name}
    Même si ça marche, je pense qu'il y a encore des choses à régler.

    Peux tu m'éclairer Dukoid car je pense que ce n'est pas tout à fait bon même si ça marche. Ça me parait bizarre.

  8. #8
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    tu va tout recommencer de zéro et tout bien classer :

    app/config/routing.yml disons que c'est le routing principal de toute l'application, de tous les bundles.

    app\Resources\config\routing.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    root:
        pattern: /
        defaults:
            _controller: FrameworkBundle:Redirect:urlRedirect
            path: /
            permanent: true
     
    app_bundle:
        resource: "@AppBundle/Controller/"
        type:     annotation
     
    blog_bundle:
        resource: "@StephanBlogBundle/Resources/config/routing.yml"
        prefix:   /blog
    tu peux remarquer que blog_bundle, cela indique de prendre en compte le routing du bundle blogBundle.
    tu n'as pas assez potasser le routing Symfony2



    src/Stephan/BlogBundle/Ressources/config/routing.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    blog_bundle_essai_test:
        path:     /essai-test/{name}
        defaults: { _controller: StephanBlogBundle:Blog:essai }

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 162
    Par défaut
    Salut Dukoid,

    J'ai fait les changements comme tu m'as indiqué respectivement dans:
    app\Resources\config\routing.yml et src\Stephan\BlogBundle\Ressources\config\routing.yml.

    php app/console router:debug me donne vers la fin:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    root                     ANY    ANY    ANY  /
    homepage                 ANY    ANY    ANY  /app/example
    blog_bundle_essai_test   ANY    ANY    ANY  /blog/essai-test/{name}
    Maintenant, j'arrive bien à accéder à http://localhost/memo/app_dev.php/bl...i-test/stephan et à http://localhost/memo/app_dev.php/app/example également.

    Merci beaucoup Dukoid.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.x] [EDIT] Erreur 500 dans symfony consultable dans les logs APACHE
    Par cornnery dans le forum Symfony
    Réponses: 2
    Dernier message: 11/03/2010, 19h43
  2. erreur VBA dans un recordset
    Par rapace dans le forum Access
    Réponses: 4
    Dernier message: 12/10/2005, 15h52
  3. ERREUR PRJ0019 dans visual -> ????
    Par cathar_rhythm dans le forum MFC
    Réponses: 1
    Dernier message: 07/06/2005, 14h00
  4. [C#] Message d'erreur vide dans une replication et rda
    Par Roach- dans le forum Windows Forms
    Réponses: 25
    Dernier message: 05/04/2005, 15h19
  5. erreur syntaxe dans requete
    Par dom - ien moutiers dans le forum Requêtes
    Réponses: 5
    Dernier message: 19/04/2004, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo