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

 PHP Discussion :

[Symfony] Je bloque totalement façe à la configuration des routes


Sujet :

PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Septembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Septembre 2016
    Messages : 52
    Par défaut [Symfony] Je bloque totalement façe à la configuration des routes
    Bonsoir à tous,

    Je préfère poster maintenant que jamais en espérant sincèrement trouver votre aide. Je doit concevoir un site internet avec le logiciel Symfony. Je n'arrive pas dès le début à configuré les routes dans le routing.yml. J'ai essayé 36 manipulations sans succès.

    Dans mon fichier routing.yml je n'ai rien d'autre que ceçi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    app:
        resource: '@AppBundle/Controller/'
        type: annotation
    et dans mon controller principal j'ai ceçi:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <?php
     
    namespace AppBundle\Controller;
     
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\Request;
     
    class DefaultController extends Controller
    {
        /**
         * @Route("/", name="homepage")
         */
        public function indexAction(Request $request)
        {
            // replace this example code with whatever you need
            echo 'heelo';
            return $this->render('default/index.html.twig', [
                'base_dir' => realpath($this->getParameter('kernel.project_dir')).DIRECTORY_SEPARATOR,
            ]);
        }
     
        /**
        * @Route("/test")
        */
        public function test()
        {
        	echo 'heeelooooo';
        }
    }
    J'ai essayé 56 urls différentes (je suis avec WAMP) et le server est normalement bien configuré.

    http://symfony/
    http://symfony/test/
    http://symfony/test
    localhost/symfony/projetpourguy/web/test
    localhost/symfony/projetpourguy/web/

    ...

    Impossible d'atteindre le controller test();. Je tombe dans tous les cas sur l'erreur suivante :

    Oops! An Error Occurred
    The server returned a "404 Not Found".
    Something is broken. Please let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused.


    Mais j'arrive cependant à atteindre le controller indexAction (et c'est normal car le projet démarre là dessus).

    Et dans ma console j'ai ça Nom : fff.jpg
Affichages : 2280
Taille : 111,7 Ko

    J'imagine donc qu'il laisse une trace quelque part de "/test" mais je n'arrive pas du tous à afficher cette méthode quelque sois l'url que j'insère dans la barre d'adresse. Et symfony n'étant pas très intuitif, j'ai essayé toute les manipulations proposées par les différents tutos à propos de la gestion des route, je n'y arrive pas... Auriez vous une idée ?

    Je vous remercie d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    bonjour,
    localhost/symfony/projetpourguy/web/test
    localhost/symfony/projetpourguy/web/
    sans configurer le virtualhost, pour accéder à l'url il faut passer par le front controller app_dev.php (en environnement de dev) ou app.php (en environnement de prod):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    localhost/symfony/projetpourguy/web/app_dev.php/test
    localhost/symfony/projetpourguy/web/app_dev.php
    Concernant ton vhost qui ne fonctionne pas c'est sûrement que apache considère index comme point d'entrée(ou front controller) de ton appli.Il faut indiquer à apache que le point d'entrée est app_dev.php ou app.php via la directive RewriteRule ^(.*)$ app.php [QSA,L] (cf la doc web_server_configuration).

    En développement, tu peux travailler sans apache en se servant du serveur de dev de symfony built_in_web_server.html.

    Si tu commences un nouveau projet autant choisir symfony 4.x. sa structuration est beaucoup plus simple et plus facile pour débuter.

  3. #3
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Septembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Septembre 2016
    Messages : 52
    Par défaut
    Je te remercie Armel, j'ai réussi à accéder à un de mes controllers "/Test" que j'ai créer en rajoutant app_dev.php.

    Je suis soulager... Cependant mon prof me fait la remarque que j'ai manqué une étape à l'installation de symfony car d'après lui il n'y a pas besoin de app_dev.php/lenomducontrolleur...

    Donc, lorsque je démarre mon projet pour accéder à la page principal, dans mon url j'ai http://Symfony. C'est pourquoi j'ai essayé en vain de faire http://Symfony/monControlleur/MaFonction, etc... Sans succès alors que d'après mon prof ca devrais marcher.

    Nom : vhost.jpg
Affichages : 2235
Taille : 104,7 Ko

    Du coup mes controllers sont accessibles en faisant http://Symfony/app_dev.php/moncontroller
    Je pensais donc qu'il suffit de rajouté l'extension app_dev.php dans mon server host Symfony. Mais ca n'explique pas vraiment pourquoi je n'ai pas besoin de app_dev.php lorsque je démarre le projet et que j'en ai besoin une fois que je change de controller

    Auriez vous une idée de là où le problème se situe ? Si vous avez besoin de screens je vous les envoies


    Sinon, j'aurais 2 autres questions:

    J'ai télécharger Symfony comme mon prof me l'a demandé, mais je n'ai aucun IDE pour travailler sur le projet. Du coup je travaille sur le projet Symfony que mon prof m'a donné avec SublimeText, est-ce que c'est grave ou ça ne change rien ?

    Concernant le server j'utilise Wamp, ca ne change rien non plus j'imagine ?

    Merci encore !

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    Je suis soulager... Cependant mon prof me fait la remarque que j'ai manqué une étape à l'installation de symfony car d'après lui il n'y a pas besoin de app_dev.php/lenomducontrolleur...
    oui exact à condition de faire une réécriture d'url avec apache( cf la doc symfony)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ app.php [QSA,L] # on accède directement à n'importe quelle URI du site sans avoir à préçiser app.php
    Attention ce n'est pas lenomducontrolleur qui est appelé dans l'URL mais le PATH( chemin pour accéder à l'action du controller). Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //HomeController.php
        /**
         *
         * @Route("/blog", name="blog_list")
         */
        public function listAction()
        {
            // ...
        }
    // pour appeler cette action dans le navigateur : http://localhost/blog
    Je pensais donc qu'il suffit de rajouté l'extension app_dev.php dans mon server host Symfony. Mais ca n'explique pas vraiment pourquoi je n'ai pas besoin de app_dev.php lorsque je démarre le projet et que j'en ai besoin une fois que je change de controller
    Parce que au démarrage du projet tu tombes sur une page d'accueil qui a pour chemin le slash @Route("/", name="homepage") et cette route mappe toute URI commençant par / ou par /app_dev.php ou app.php.

    Voici un exemple de virtualhost extrait de la doc SF:
    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
    20
    21
    22
    23
    24
     
    <VirtualHost *:80>
        ServerName symfony
     
        DocumentRoot /var/www/html/monprojet/web
    	 <Directory /var/www/html/monprojet/web>
            AllowOverride None
            Order Allow,Deny
            Allow from All
            <IfModule mod_rewrite.c>
                Options -MultiViews
                RewriteEngine On
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteRule ^(.*)$ app.php [QSA,L]
            </IfModule>
        </Directory>
     
      <Directory /var/www/html/monprojet/web/bundles>
            <IfModule mod_rewrite.c>
                RewriteEngine Off
            </IfModule>
        </Directory>
     
    </VirtualHost>
    Quant à l'IDE ou l'éditeur pour saisir le code, tu peux utiliser n'importe lequel des IDEs existants( VS Code, Sublime Text, eclipse, PHPstorm...) ça n'a aucune importance.

  5. #5
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Septembre 2016
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Septembre 2016
    Messages : 52
    Par défaut
    Merci encore, désoler de persisté mais j'essaie de bien comprendre car je test malgré tout même en suivant les exemples et ça ne va pas. J'essaie de trouver d'où vient le problème.

    Tu insiste bien sur le RewriteRule en disant qu'il permet d'ignorer app_dev.php, et tu préçise aussi que le path du controller auquel je veut accéder, doit comporter ceçi @Route. Voiçi mon code :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    <?php
     
    namespace AppBundle\Controller;
     
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\Request;
     
    class DefaultController extends Controller
    {
        /**
         * @Route("/", name="homepage")
         */
        public function indexAction(Request $request)
        {
            // replace this example code with whatever you need
            echo 'heelo';
            return $this->render('default/index.html.twig', [
                'base_dir' => realpath($this->getParameter('kernel.project_dir')).DIRECTORY_SEPARATOR,
            ]);
        }
     
        /**
         * @Route("/test", name="test")
         */
        public function test(Request $request)
        {
            return new Response("Hello");
        }
    }?>
    Voiçi la configuration du virtualHost que mon prof m'a demandé de mettre pour mon server :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    Créer un nouveau virtual host <le nom du virtual host> dans le <le folder de votre virtual host> 
     
    Votre projet porte un nom : <le nom de votre projet> (pas d'espaces justes de '-' ou des '_') 
     
    Ajouter ceci dans la configuration du virtual host (httpd-vhosts.conf) : 
     
    <VirtualHost *:80> 
     
        ServerName <le nom donnée à votre virtual host> 
     
     
     
        DocumentRoot <le folder de votre virtual host>/<le nom de votre projet>/web  <- votre folder avec /web après. 
     
        <Directory <le folder de votre virtual host>/<le nom de votre projet>/web>  <- votre folder avec /web après. 
     
            AllowOverride All 
     
            Order Allow,Deny 
     
            Allow from All 
     
        </Directory> 
     
     
     
       <Directory  "<le folder de votre virtual host>"> 
     
    Options +Indexes +Includes +FollowSymLinks +MultiViews 
     
    AllowOverride All 
     
    Require local 
     
       </Directory> 
     
    </VirtualHost> 
     
     
     
    Exemple  
     
    Mon projet est "my_project" 
     
    Mon folder est : "C:\Users\Guy\Documents\Sites\symfony" 
     
    Mon nom de virtual host est : "symfony" 
     
     
     
    Mon httpd-vhosts.conf est : 
     
    <VirtualHost *:80> 
     
    ServerName symfony 
     
    DocumentRoot "c:/users/guy/documents/sites/symfony/my_project/web" 
     
     
     
    <Directory  "c:/users/guy/documents/sites/symfony/my_project/web"> 
     
    AllowOverride All 
     
            Order Allow,Deny 
     
            Allow from All 
     
    </Directory> 
     
     
     
    <Directory  "c:/users/guy/documents/sites/symfony/"> 
     
    Options +Indexes +Includes +FollowSymLinks +MultiViews 
     
    AllowOverride All 
     
    Require local 
     
    </Directory> 
     
    </VirtualHost> 
     
     
     
    Relancer tous les services !
    Il n'y a pas de RewriteRule dedans, et lorsque je vais sur mon url "symfony/test/" ca ne va toujours pas sans le app_dev.php, du coup est-ce que je doit refaire un virtual host comme mon prof m'a donné mais en rajoutant le rewriteRule ?

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    La différence entre les 2 fichiers de config du virtualhost tient particulièrement sur une ligne AllowOverride All| None .
    Dans ton cas tu autorises, via AllowOverride All, que des directives apache dont le RewriteRule ( et bien plus) soient écrites dans le fichier .htaccess.
    Dans mon cas mon , je désactive le fichier .htaccess via la directive AllowOverride None . Ce qui implique de mettre toutes les directives dans le fichier de config de mon virtualhost.

    Donc si ça ne marche pas chez toi, cela peut être lié soit à l’absence du fichier .htaccess dans le dossier web soit le .htaccess est désactivé.Pour activer le .htaccess il faut t’assurer que le module apache suivant mod_rewrite(ou rewrite_module) est est activé. Tu peux activer un module apache depuis l’icône de démarrage de wamp( clic droit ou clic gauche je ne sais plus).

Discussions similaires

  1. Configuration des routes vers ma page de garde
    Par Jupiter2003 dans le forum Ruby
    Réponses: 12
    Dernier message: 30/07/2015, 10h18
  2. Réponses: 6
    Dernier message: 09/11/2013, 10h05
  3. acts_as_tree et configuration des routes
    Par Javix dans le forum Ruby on Rails
    Réponses: 3
    Dernier message: 10/02/2009, 13h14
  4. Configurations des routes
    Par Javix dans le forum Ruby on Rails
    Réponses: 16
    Dernier message: 19/12/2008, 15h29
  5. Configuration des routes
    Par jokobbb dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 21/04/2006, 12h11

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