Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 12-04-2013 17:36:31

lucie
Membre
Date d'inscription: 21-02-2013
Messages: 15

double parametre pour deux childs routes

Bonsoir à tous,

J'aimerais rendre un de mes modules accessible mon application par deux routes différentes ayant 2 paramètres optionnel.

Voici les urls que j'aimerais pouvoir consulter :

/users qui renvoi la liste de tous mes utilisateurs
/users/1 renvoi seulement mon utilisateurs 1

/users/1/structures qui renvoi la liste des structures pour l'utilisateur 1.
/users/1/structures/2 qui renvoi la structure 2 de l'utilisateur 1

Que pensez vous de la construction de ma route ?

Code:

[lang=php]
'users' => array(
                'type' => 'Segment',
                'options' => array(
                    'route' => '/users[/:id]',
                    'constraints' => array(
                        'id'     => '[0-9]+',
                    ),
                    'defaults' => array(
                        'controller' => 'User\Controller\UsersController'
                    ),

                ),
                'may_terminate' => true,
                'child_routes'  => array(
                    'structures' => array(
                        'type' => 'Segment',
                        'options' => array(
                            'route' => '/structures[/:idStructure]',
                            'constraints' => array(
                                'idStructure'     => '[0-9]+',
                            ),
                            'defaults' => array(
                                'controller' => 'User\Controller\UsersStructuresController'
                            ),

                        ),
                    ),
                    'consolidation' => array(
                        'type' => 'Segment',
                        'options' => array(
                            'route' => '/consolidations[/:idConsolidation]',
                            'constraints' => array(
                                'idConsolidation'     => '[0-9]+',
                            ),
                            'defaults' => array(
                                'controller' => 'User\Controller\UsersConsolidationsController'
                            ),

                        ),
                    )
                )
            ),

Pourquoi dans ce code, si j'appelle l'url : /users/1/structures/2 présent dans mon controller Rest $id vaut le id de l'user et pas celui de la structure ?

Code:

[lang=php]
    /**
     * Return single resource
     *
     * @param  mixed id
     * @return mixed
     */
    public function get($id)
    {
        $idUser = $this->params("idStructure");
        $jsonModel = new JsonModel(array("Je suis dans le get id qui vaut ".$id. " le idUser quand a lui vaut " . $idUser));
        return $jsonModel;

    }

Pourquoi quand je tape /users/1/structures je ne rentre pas dans ma méthode getList de mon controller Rest ?

Code:

[lang=php]
    /**
     * Return list of resources
     *
     * @return mixed
     */
    public function getList()
    {

        $idUser = $this->params("idStructure");
        $jsonModel = new JsonModel(array("Je suis dans le getList " .$idStructure));
        return $jsonModel;
    }

J'espère que j'ai été suffisament précise dans ma question. N'hésite pas à me demander si vous avez besoin d'information supplémentaire.

Merci d'avance pour vos réponses.

Hors ligne

 

#2 12-04-2013 17:54:04

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: double parametre pour deux childs routes

Salut, les routes semblent correctes à première vue. par contre pour tes variables j'ai un truc qui me chagrine :p.

lucie a écrit:

$idUser = $this->params("idStructure");

Ca vient peut être de là le problème ?

Hors ligne

 

#3 12-04-2013 18:00:58

lucie
Membre
Date d'inscription: 21-02-2013
Messages: 15

Re: double parametre pour deux childs routes

Oui effectivement je me suis trompée sur le nom de la variable.
Merci Orkin.

Mon but était de pouvoir récupérer les deux id...

Mais j'ai modifié le code de ma fonction get

Code:

[lang=php]
    /**
     * Return single resource
     *
     * @param  mixed id
     * @return mixed
     */
    public function get($idStructure)
    {
        $idUser = $this->params("id");
        $jsonModel = new JsonModel(array("Je suis dans le get id qui vaut ".$idStructure. " le idUser quand a lui vaut " . $idUser));
        return $jsonModel;

    }

Mais j'ai toujours un problème, $idUser == $idStructure

Et lorsque j'appelle /users/1/structures il rentre encore dans la méthode get($i) plutôt que getList() =S

Dernière modification par lucie (12-04-2013 18:01:13)

Hors ligne

 

#4 12-04-2013 18:09:46

lucie
Membre
Date d'inscription: 21-02-2013
Messages: 15

Re: double parametre pour deux childs routes

C'est bon j'ai trouvé la solution (Merci Bakura)

J'ai sortie la route structures de la route Users et j'ai explicitement donnée le nom de mes paramètres.

Code:

[lang=php]
'structures' => array(
                'type' => 'Segment',
                'options' => array(
                    'route' => '/users/:idUser/structures[/:id]',
                    'constraints' => array(
                        'id'     => '[0-9]+',
                        'idUser'         => '[0-9]+',
                    ),
                    'defaults' => array(
                        'controller' => 'User\Controller\UsersStructuresController'
                    ),
                    'may_terminate' => true,
                ),
            ),

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages