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 :

routing et symfony [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 207
    Par défaut routing et symfony
    Bonjour.

    Par défaut le détail d'un utilisateur est accessible comme ceci user/show/id/1.

    J'aimerai pouvoir afficher le détail d'un utilisateur comme ceci, user/pseudoutilisateur.

    J'ai défini une route comme ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    show_user:
      url:   /user/:username
      param: { module: user, action: show }

    j'ai modifié mon executeshow comme ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public function executeShow(sfWebRequest $request)
      {
        $this->sf_guard_user = Doctrine::getTable('sfGuardUser')->find($request->getParameter('username'));
    	//$this->sf_guard_user =  $this->getRoute()->getObject();
     
        $this->forward404Unless($this->sf_guard_user);
      }
    Quand je veux acceder au detail de mon utilisateur /user/utilisateur1 j'obtiens ceci,

    404 | Not Found | sfError404Exception
    Action "user/utilisateur1" does not exist.

    Vous avez des idées sur mon problème?

    Merci

  2. #2
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Par défaut
    Salut,

    Dans le Find(), il faut envoyer l'id je crois bien.

    En espérant t'aider...

    A+

    Mathieu

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 207
    Par défaut
    Citation Envoyé par mathieu44800 Voir le message
    Salut,

    Dans le Find(), il faut envoyer l'id je crois bien.

    En espérant t'aider...

    A+

    Mathieu
    Ca sous entends que dans l'url faut toujours y passer l'id?
    Mais de toute facon meme si je fait une url de ce genre /user/utilisateur/id ca me renvoi toujours la même erreur (en passant l'id dans le executeshow)

    EDIT : de toute facon je dois rater quelque chose car si je fais une route comme ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    show_user:
      url:   /user/showw/:id
      param: { module: user, action: show }
    et si j'affiche /user/showw/1 ca me met la même erreur, mes routes doivent être mauvaises alors?

  4. #4
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Par défaut
    Salut,

    Non pas forcément, tu as plusieurs choix :

    Tu peux utiliser les sessions

    Get :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sfContext::getInstance()->getUser()->getAttribute('id');
    Set :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sfContext::getInstance()->getUser()->setAttribute('id', $taValeur);
    A moins que tu sois déjà loggué. un simple getUser()->getId() suffit.

    Tu peux utiliser deux paramètres dans ton url avec le nom et l'id

    Attention au Requirement avec cette méthode

    Ou tu peux aussi implémenter une méthode findByName si tes username sont uniques dans ta bdd

    A+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 207
    Par défaut
    Je sais pas si tu as vu l'edit de mon dernier message.

    Mais j'ai laissé tel quel en crééant une route pour avoir le detail de l'utilisateur par showw et non show et ca ne passe pas.

    Je dois mal cerner quelque chose et sauter peux être une étape?

    Merci

  6. #6
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Par défaut
    404 | Not Found | sfError404Exception
    Action "user/utilisateur1" does not exist.
    Est ce que tu peux afficher si la route matchée par symfony est celle que tu veux lui faire utiliser ou la route par defaut ?

    Car le message que tu reçois proviens que l'action correspondante a ta route n'as pas été trouvée.

    A+

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 207
    Par défaut
    Ma nouvelle route de test hyper simple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    show_user:
      url:   /user/showw/:id
      param: { module: user, action: show }
    Si je fais un /user/show/id/1 j'ai bien le détail du membre, l'action show du module user existe bien et est fonctionnel.

    par contre si je fais /user/showw/id/1 qui est l'url de la route que je veux créer si je ne m'abuse (tu confirmes?) ca me donne un Action "user/showw" does not exist. il prends cela comme étant une action et non une url routée.

    C'est à ne plus rien comprendre!!!

  8. #8
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Par défaut
    Salut,

    Je crois qu'il te prends la route par défaut.

    Regardes la route matchée dans l'onglet logs de ta barre de développement symfony (en haut à gauche)

    A+

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 207
    Par défaut
    Dans mon fichier de log j'ai trouvé ceci
    Oct 28 15:07:18 symfony [info] {sfPatternRouting} Match route "default" (/:module/:action/*) for /user/showw/id/1 with parameters array ( 'id' => '1', 'module' => 'user', 'action' => 'showw',)
    Tu sembles donc avoir raison, ca prends la route par défaut.
    Par contre si je vire les deux routes par défaut le log donne cela.

    Oct 28 15:11:53 symfony [info] {sfPatternRouting} Connect sfRoute "homepage" (/)
    Oct 28 15:11:53 symfony [info] {sfPatternRouting} Connect sfRequestRoute "show_user" (/user/showw/:id)
    Oct 28 15:11:53 symfony [err] {sfError404Exception} Empty module and/or action after parsing the URL "/user/showw/id/1" (/).
    La route semble être la bonne sauf qu'on me dit que le module est vide ....

  10. #10
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Par défaut
    Essayes de rentrer ça dans ta route :


  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 207
    Par défaut
    merci ca marche.

    Que ce fut dur.

    Un grand merci à toi.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Par défaut
    Si ce n'est pas déjà fait: essaye de prendre la route que tu viens de créer et met là tout en haut de ton fichier de routing.

  13. #13
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Par défaut
    Salut,

    Il a raison, tu n'es pas obligé de supprimmer le route par défaut, si tu mets tes autres routes au dessus, elles seront matchées en premier.

    A+

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

Discussions similaires

  1. [2.x] Route symfony dans le paramètre url d'un appel ajax
    Par abc.xyz dans le forum Symfony
    Réponses: 8
    Dernier message: 03/08/2014, 08h17
  2. [2.x] Route - Symfony 2
    Par wadjo dans le forum Symfony
    Réponses: 5
    Dernier message: 07/06/2014, 12h09
  3. [2.x] Problème Symfony 2.1.7 : perte de route, soucis de cache...
    Par guiguidoudou dans le forum Symfony
    Réponses: 1
    Dernier message: 09/05/2014, 11h43
  4. [2.x] Sur la route de Symfony 2.1
    Par dourouc05 dans le forum Symfony
    Réponses: 6
    Dernier message: 29/05/2012, 21h54
  5. [1.x] emailing à route via une tache symfony
    Par lepopol dans le forum Symfony
    Réponses: 7
    Dernier message: 10/01/2011, 17h02

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