Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Symfony] Dev : marche, Prod: Marche Pas

Sujet résolu
    9 février 2016 à 2:04:48

    Bonjour

    Je suis en train de migrer doucement mon site vers symfony
    J'en suis au moment où j'intègre mes vues, il n'y a aucun repository, aucune entité, et que des routes simples et des contrôleurs simples que voici

    wca_site_homepage:
        path:     /
        defaults: { _controller: WCASiteBundle:Pages:index }
    
    wca_site_page:
        path:     /{category_of_page}/{page_name}
        defaults:
            _controller: WCASiteBundle:Pages:page
    
    wca_site_pageAlone:
        path:     /{page_name}
        defaults: { _controller: WCASiteBundle:Pages:pageCategory }
    
    wca_site_category:
        path:     /{category_name}/
        defaults: { _controller: WCASiteBundle:Pages:category }
    class PagesController extends Controller
    {
        public function indexAction()
        {
            return $this->render('WCASiteBundle:Pages:index.html.twig');
        }
    
        // Url de type /categorie/nom
        public function pageCategoryAction($category_of_page, $page_name)
        {
            return $this->render('WCASiteBundle:Pages/' . $category_of_page . ':' . $page_name . '.html.twig');
        }
    
        //  url de type /page sans catégorie
        public function pageAloneAction($page_name)
        {
            return $this->render('WCASiteBundle:Pages/' . $page_name . '.html.twig');
        }
    
    
        // url du type /categorie/ sans rien après
        public function categoryAction($category_name)
        {
            return $this->render('WCASiteBundle:Pages/' . $category_name . ':index.html.twig');
        }
    
    
    }

    Tout marche niquel mais si je go en app.php au lieu de _dev.php j'ai une 404...

    Des idées ?

    Merci les potes

    -
    Edité par link1997 9 février 2016 à 2:19:50

    • Partager sur Facebook
    • Partager sur Twitter
      9 février 2016 à 8:20:31

      Salut, tes routes sont bien importé ?

      Tu peux utiliser la console de symfony avec router:debug et --env=prod

      php app/console router:debug --env=prod

      A+

      • Partager sur Facebook
      • Partager sur Twitter
      Come to the dark side ... we have cookies !!! ~ DeviantArt
        9 février 2016 à 10:02:27

        Bonjour,

        Si la commande router:debug que t'as donné Linchan n'affiche pas tes routes, c'est sans doute que ton cache de prod n'est pas à jour.

        Tu as vidé le cache prod avant de faire de ton test ?

        php app/console cache:clear -e=prod
        • Partager sur Facebook
        • Partager sur Twitter
          9 février 2016 à 10:30:42

          Bonjour,

          un truc me saute aux yeux directement, c'est ta deuxième route. Pourquoi toutes ont les accolades autour de _controller sauf celle-la ?
          Sachant que YML est très, mais alors très sensible a la syntaxe il faut faire attention :)

          wca_site_page:
              path:     /{category_of_page}/{page_name}
              defaults: { _controller: WCASiteBundle:Pages:page }

          De plus il me semble qu'il y est un mélange dans tes actions et leur appel dans le routing :

          wca_site_pageAlone:  Appel l'action pageCategory alors qu'elle devrait appelé pageAloneAction

          Et ta route wca_site_page, qui devrait appeler pageCategory au vue des arguments, appel pageAction qui n'existe pas ;)

          Donc je pense que ton routing devrait ressemble a ça :

          wca_site_homepage:
              path:     /
              defaults: { _controller: WCASiteBundle:Pages:index }
           
          wca_site_page:
              path:     /{category_of_page}/{page_name}
              defaults: { _controller: WCASiteBundle:Pages:pageCategory }
           
          wca_site_pageAlone:
              path:     /{page_name}
              defaults: { _controller: WCASiteBundle:Pages:pageAlone }
           
          wca_site_category:
              path:     /{category_name}/
              defaults: { _controller: WCASiteBundle:Pages:category }



          -
          Edité par Hsuissia 9 février 2016 à 10:31:59

          • Partager sur Facebook
          • Partager sur Twitter
          Voir une araignée c'est rien ... Le pire c'est quand tu ne la vois plus !
            9 février 2016 à 10:45:05

            Un petit truc aussi qui va être très utile, fait soit des contraintes dans ton routing, soit des vérifications quand tu génères tes vues depuis le contrôleur. 

            Parce que si je met un /@|><° / $£% dans mon navigateur, je suis pas sûr que Symfony va aimer ce que je lui passe. 

            • Partager sur Facebook
            • Partager sur Twitter
              9 février 2016 à 10:55:25

              @Cernkor,

              Il me semble que symfony va traiter l'url, avec l'argument qui sera derrière ( vue que l'url va transformé les caractères spéciaux : %A3... ) Donc, il cherchera dans la base un nom de page = ><°$£%

              A l'exception de @ et | qu'il ne traduit pas en %... et du / a faire attention qui est le séparateur dans l'url et donc tu passera de 1 a 2 arguments.

              En effet l'idée de contrainte est plutot une excellente idée, une fois que les urls seront correctement écrits, et taggeront les bonnes méthodes ;)

              Il se peut aussi que le navigateur renvoi une erreur 400 : Bad Request ;)

              -
              Edité par Hsuissia 9 février 2016 à 10:56:08

              • Partager sur Facebook
              • Partager sur Twitter
              Voir une araignée c'est rien ... Le pire c'est quand tu ne la vois plus !
                9 février 2016 à 11:08:16

                @Hsuissia : Même si l'url est traitée, je suis pas sûr que ce soit une bonne idée de laisser se balader des caractères spéciaux dans une url (mis à part les accents et les espaces. Et plus tu contrôles les données que tu va traiter après, moins t'as de risques de bugs non prévus.

                Un peu de lecture : Un lien StackOverflow sur les caractères "safes".

                • Partager sur Facebook
                • Partager sur Twitter
                  9 février 2016 à 11:11:38

                  C'est pour ça que je suis d'accord avec toi ;) Merci pour le lien.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Voir une araignée c'est rien ... Le pire c'est quand tu ne la vois plus !
                    9 février 2016 à 20:39:58

                    Re à vous

                    Le truc c'est que si j'effectue mes nouvelles routes, avec contraintes

                    wca_site_page:
                        path:     /{category_of_page}/{page_name}
                        defaults:
                            _controller: WCASiteBundle:Pages:pageCategory
                        requirements:
                            category_of_page:   ([a-z0-9\-]+)
                            page_name:   ([a-z0-9\-]+)
                    
                    wca_site_pageAlone:
                        path:     /{page_name}
                        defaults: 
                        	_controller: WCASiteBundle:Pages:pageAlone
                        requirements:
                            page_name:   ([a-z0-9\-]+)
                    
                    wca_site_category:
                        path:     /{category_name}/
                        defaults: 
                        	_controller: WCASiteBundle:Pages:category
                        requirements:
                            category_name:   ([a-z0-9\-]+)

                    I'm lost, je me prend des erreurs 500 dans la face



                     EDIT : Et oui c'est 4 espaces et non pas un TAB

                    -
                    Edité par link1997 9 février 2016 à 20:44:30

                    • Partager sur Facebook
                    • Partager sur Twitter

                    [Symfony] Dev : marche, Prod: Marche Pas

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown