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 :

Utiliser les actions automatiquement crées [1.x]


Sujet :

PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 71
    Points : 49
    Points
    49
    Par défaut Utiliser les actions automatiquement crées
    Bonjour à tous.
    J'ai un petit problème, lorsque je veux utiliser les actions générés automatiquement par Symfony tels que : New, Index, Edit etc...

    En fait, lorsque je crée mes propres actions, je n'ai aucun problème pour les appeler, que ce soit directement ou par le fichier routing.yml.

    Cependant, si je fais un lien vers une action qui existe déjà, j'ai constamment une erreur.

    Donc voici un exemple concret, je veux afficher la liste des membres, lorsque je clic sur un bouton du menu.
    J'ai donc en html ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="<?php echo url_for('membre/index'); ?>" class='bouton'><?php echo __('Browse'); ?></a>
    Donc j'ai l'action membre/index qui s'est crée automatiquement ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class membreActions extends sfActions
    {
      public function executeIndex(sfWebRequest $request)
      {
        $this->membress = Doctrine_Core::getTable('Membres')
          ->createQuery('a')
          ->execute();
      }
    Et j'ai également le template associé, avec la bonne nomenclature évidemment.

    Cependant, voici l'erreur que j'obtiens lorsque je clic sur le boutton :

    Unable to find a matching route to generate url for params "array ( 'action' => 'edit', 'module' => 'membre', 'id' => '1',)".

    Donc voila si quelqu'un avait une idée ...
    Merci d'avance de votre réponse.

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 80
    Points : 169
    Points
    169
    Par défaut
    Bonjour,

    qu'y a-t'il dans votre fichier de routes ?

    Il semblerait que cela soit lors de la génération de votre page à laquelle vous accédez via votre clic, que cela coince.

    En l'occurence, avez vous vérifié que :
    - Vous avez bien une route pour la classe "membreActions" et sa méthode "executeEdit" ?
    - La route gérant l'édition de votre membre référence bien une action "executeEdit" dans votre classe membreActions ?

    Cette route prend par ailleurs un paramètre "id" si on se réfère au message d'erreur de Symfony.

    Cdt.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 71
    Points : 49
    Points
    49
    Par défaut
    Merci pour votre réponse.
    En fait, je viens de réussir à résoudre ce problème, dans mon fichier routing.yml, j'avais ce bout de code qui était commenté :

    default:
    url: /:module/:action/*

    Je commençais à remettre en question mon apprentissage en me disant que j'avais peut-être loupé un épisode
    Merci en tout cas, Résolu

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 80
    Points : 169
    Points
    169
    Par défaut
    Avec symfony, il est préférable d'être explicite sur les routes supportées afin de définir les protocoles d'accès aux différentes interface du site.

    Cela permet en outre de valider que les paramètres attendus sont bien passés, comme par exemple l'identifiant d'un membre dans votre cas. Cela permet de spécifier si on veut du POST, du GET, les deux, si le retour est de l'html, du json, etc.

    dans votre cas vous devriez avoir dans votre route (en adaptant l'url à votre formalisme) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    membre_edit:
      url:     /membre/:id/edit
      class:   sfDoctrineRoute
      options: { model: Membre, column: id, type: object }
      param:   { module: membre, action: edit }
      requirements: { id: \d+, sf_method: get }
    Je ne saurais donc trop vous conseiller de prendre dès à présent l'habitude d'être explicite sur vos routes.

    [edit] Et accessoirement, lorsque vous serez explicite sur vos routes, il vous faudra aussi remettre en commentaire les lignes que vous avez dé-commenté pour pallier à votre problème.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 71
    Points : 49
    Points
    49
    Par défaut
    Donc je dois créer une route pour chaque actions qui est crée automatiquement ?

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 80
    Points : 169
    Points
    169
    Par défaut
    Qu'entendez vous par "action créée automatiquement" ?

    Si c'est par un générateur, ce dernier devrait créer aussi les routes des actions qu'il crée. Par exemple c'est ce qui est fait lorsque vous générez un module, ce dernier va vous créer une action par défaut (index), qui sera référencée dans le fichier routing.yml.

    A votre charge par la suite de spécifier les routes que vous allez ajouter. Il y a un cas particulier pour les collections de routes qui gèrent toutes les routes d'un CRUD (vous avez l'exemple d'utilisation là => http://www.symfony-project.org/more-...vanced-Routing).

    Cdt.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 71
    Points : 49
    Points
    49
    Par défaut
    Euh .. Quand je crée un module via la commande dans la console, il n'y a aucune modification dans le fichier routing.yml
    Certes, les actions existent bien : Par exemple je crée un module voiture, si je tape dans l'url : voiture/new ça marche.
    Mais dans routing.yml il n'y a aucune modification.

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 80
    Points : 169
    Points
    169
    Par défaut
    C'est justement parce que vous avez la route par défaut qui est décommentée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    default:
    url: /:module/:action/*
    Cette route par défaut, dit simplement qu'à une url donnée /xxx/yyy, il va essayer de faire correspondre l'action yyy du module xxx, ce qui correspond bien à ce que vous dites avec l'exemple de la voiture et du new.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/02/2010, 18h58
  2. si j'utilise les commande MSdos le PC s'éteint automatiquement
    Par devlopassion dans le forum Windows XP
    Réponses: 4
    Dernier message: 27/05/2007, 01h29
  3. [Tests] Un freeware pour les actions automatique
    Par layouni dans le forum Windows
    Réponses: 1
    Dernier message: 06/09/2006, 17h23
  4. Comment désactiver les actions automatiques de Windows ?
    Par j-phi dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 06/01/2005, 12h53
  5. Utiliser les méthodes des boutons crées en rafale.
    Par kabouns dans le forum Composants
    Réponses: 8
    Dernier message: 03/12/2004, 10h48

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