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 :

route has some missing mandatory parameters (:idacteur)


Sujet :

Symfony PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 176
    Par défaut route has some missing mandatory parameters (:idacteur)
    Bonjour
    j'ai un probleme concernant le routage d'un exemple que je suis entrain de réaliser qui concerne des acteurs et leur films
    chaque acteur à participer à un ou plusieurs film
    donc j'ai crée un module acteur dans lequel il y a une liste de tous les acteur et quand je choisi un acteur j'ai ses detail et la liste des film ou il a joué de là aucun probleme ,
    les choses se gate quand j'ajoute un pager

    voici qlq ligne de 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
     
    Acteur:
      url:  /Acteur/:page
      class: sfRequestRoute
      param: { module: Acteur, action: index, page: 1 }
      requirements:
       page: \d+
       sf_method: [get]
     
    Acteur_Detail:
      url: /ActeurDetail/:idacteur
      class: sfPropelRoute
      param: { module: Acteur, action: detail }
      options: { model: Acteur, type: object }
     
    Acteur_Detail_Film:
      url: /ActeurDetail/:idacteur/:page
      class: sfRequestRoute
      class: sfPropelRoute
      param: { module: Acteur, action: detail, page: 1 }
      options: { model: Acteur, type: object }
      requirements:
       page: \d+
       sf_method: [get]
    le pager marche et la premiere page qui concerne la liste des acteur marche le probleme est comment passer les paramettres liées à "idacteur" et "page" car idacteur est liée au model Acteur

    voici le code executeDetail
    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
    public function executeDetail(sfWebRequest $request)
      {
      	$this->idActeur=ActeurPeer::getActeurByID($request->getParameter('idacteur'));
      	$this->filmArray=FilmPeer::getIdFilmByCodeActeur
                                  (
                                   $request->getParameter('idacteur'),
      		               $request->getParameter('page'),
      		               sfConfig::get('app_total_items_acteur_film'));
            
    	$this->acteurDetail=ActeurPeer::getActeurDetailByID($this->idActeur);
      	
      	
      	return sfView::SUCCESS;
      }

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Es-tu sur que FilmPeer soit capable d'interpréter getIdFilmByCodeActeur correctement ?

    Ou alors c'est une méthode a toi que tu ne nous donnes pas ?

    Mais si elle est interprété par la méthode magique __call() de FilmPeer, j'ai des doutes qu'elle la trouve et elle ne devrait avoir qu'un argument.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 176
    Par défaut
    Voici la méthode getIdFilmByCodeActeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class FilmPeer ....
     
    public static function getIdFilmByCodeActeur($currentPage, $totalItems)
    {
     
       $c = new Criteria();
       $c->addAscendingOrderByColumn(self::NAME);
       $pagerObj = new sfPropelPager('Film', $totalItems);
           $pagerObj->setCriteria($c);
           $pagerObj->setPage($currentPage);
           $pagerObj->init();
        return $pagerObj;
    }

  4. #4
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Je ne connais que la 1.4 et Doctrine donc je vais peut-être dire une bêtise, mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Acteur_Detail_Film:
      url: /ActeurDetail/:idacteur/:page
      class: sfRequestRoute
      class: sfPropelRoute
    ça me parait bizarre. Déclarer une sfPropelRoute ne suffit pas ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 176
    Par défaut
    moi aussi je pense que c'est une erreur de declarer deux class mais idacteur utilise le model Acteur et pager concerne la pagination des films
    donc mon url doit etre de la forme ...../idacteur/numeropage

  6. #6
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Mais si tu penses que c'est une erreur, pourquoi le faire ?

    En fait, je me demande si ton problème de route ne vient pas de là. En particulier, une route de classe sfRequestRoute ne permet pas de lier la route à un objet. Avec ce paramétrage probablement erroné, je parie que Symfony instancie la première classe trouvée donc une sfRequestRoute, la suite étant plus difficile à prévoir sauf sur un point : c'est que ça va bugger

    As-tu essayé en déclarant juste la bonne classe de route (sfPropelRoute) comme pour Acteur_Detail ?

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 176
    Par défaut
    oui sa marche les choses se compliquent quand j'ajoute un pager car en selectionnant un acteur pour voir ses detail, j'ai une liste de film ou il a joué, du coup j'ai ajouter un pager pour eviter de trop surchargé la page, du coup en selectionnant l'acteur j'aurai une url du type /idacteur
    mais en ajoutant un pager il faut ajouté le num de la page

  8. #8
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Trois choses :

    Effectivement, deux classes pour une route, c'est pas top. Par contre, je pense qu'il ne prend que la dernière en compte...

    Dans ta méthode getIdFilmByCodeActeur il y a beaucoup de choses que je ne comprend pas. OK, mon propel est loin (très loin), mais dans la requête que tu joints à ton pager tu ne fais pas référence à l'idacteur ? De plus, ton projet est très récent (à ce que je comprend) pourquoi utiliser propel en lieu et place de doctrine ?

    Dans la route, tu n'es pas obliger de déclarer tous les paramètres, tu peux parfaitement avoir une route du genre www.monsite.com/ActeurDetail/345.html&page=3
    Ce qui va se traduire par la route
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Acteur_Detail_Film:
      url: /ActeurDetail/:idacteur.sf_format
      class: sfRequestRoute
      class: sfPropelRoute
      param: { module: Acteur, action: detail, page: 1 }
      options: 
        model: Acteur
        type: object 
        with_wilcard_routes: true
      requirements:
        sf_method: [get]

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 176
    Par défaut
    Merci pour ta reponse, t'aurai pas un tuto qui explique with_wilcard_routes
    Merci d'avance

  10. #10
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    A ma connaissance non.

    Cela permet de rajouter des paramètres à la suite de la requête et de les récupérer dans le getParameters de l'objet sfWebRequest.

    L'avantage est que les paramètres sont optionnel, vu que si tu ne les mets pas, l'URL générée reste viable.

  11. #11
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 176
    Par défaut
    merci pour les explications je vais encore cherché et faire des test
    MErci

Discussions similaires

  1. [2.x] Some mandatory parameters are missing
    Par newborns dans le forum Symfony
    Réponses: 5
    Dernier message: 24/03/2014, 21h08
  2. [phpToPDF] Erreur d'affichage:Some data has already been output, can't send PDF file
    Par agbere dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 12/08/2008, 08h19
  3. Réponses: 10
    Dernier message: 05/06/2008, 18h22
  4. [FPDF] Some data has already been output, mais où ?
    Par baggie dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 11/04/2008, 22h16
  5. [PHPMyAdmin] Missing parameter sous IE
    Par patbon dans le forum Installation
    Réponses: 2
    Dernier message: 30/05/2006, 01h24

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