Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J'essai de diriger un formulaire vers une action du controller :
[lang=php]$form->setAttribute('action',$this->url('user',array('action' => 'add')));
Celui-ci renvoi juste '/user'
Les routes semblent correctement définies. Ca fait 2/3 fois que j'essai, et je finis par abandonner et marquer l'url directement.
Il me semble utiliser $this->url correctement.
Je sèche là !
Dernière modification par pconrad (12-05-2014 10:18:48)
Hors ligne
Bonjour,
On peut avoir une extrait conséquent ou l'intégralité de ta conf de routes ?
Là comme ça je dirais que la route user n'a pas de sous route ou de paramètre pour mettre une action add...
Hors ligne
Hello,
tu devrais faire une route child et enlever action
De même j'imagine que tu devrais avoir une route user/del et user/update ^^
Hors ligne
Bonjour,
Désolé, j'avais des soucis avec Oracle sur un autre projet....
Voici mes routes :
[lang=php] 'router' => array ( 'routes' => array ( 'user' => array ( 'type' => 'Literal', 'options' => array ( // Change this to something specific to your module 'route' => '/user', 'defaults' => array ( // Change this value to reflect the namespace in which // the controllers for your module are found '__NAMESPACE__' => 'User\Controller', 'controller' => 'User', 'action' => 'index' ) ), 'may_terminate' => true, 'child_routes' => array ( 'add' => array ( 'type' => 'Literal', 'options' => array ( 'route' => '/add', 'defaults' => array ( 'action' => 'add' ) ), 'verb' => 'get,post' ), 'edit' => array ( 'type' => 'Segment', 'options' => array ( 'route' => '/edit/:id', 'constraints' => array ( 'id' => '[1..9][0..9]*' ), 'defaults' => array ( 'action' => 'edit' ) ), 'verb' => 'get,post' ), 'login' => array ( 'type' => 'Literal', 'options' => array ( 'route' => '/login', 'defaults' => array ( 'action' => 'login' ) ), 'verb' => 'get,post' ), 'logout' => array ( 'type' => 'Literal', 'options' => array ( 'route' => '/logout', 'defaults' => array ( 'action' => 'logout' ) ), 'verb' => 'get,post' ), 'towns' => array ( 'type' => 'Literal', 'options' => array ( 'route' => '/towns', 'defaults' => array ( '__NAMESPACE__' => 'User\Controller', 'controller' => 'Json', 'action' => 'towns' ) ), 'verb' => 'get,post' ) ) ) ) ),
Cela ne me semble pas étrange par rapport à d'autres exemples.
Hors ligne
oh, alors en fait tu appel mal ta route:
la tu appel la route user avec un paramètre action ce qui n'est pas possible puisque ta route est littérale donc sans paramètre justement.
il faut que tu appel la route add qui est ta route child :
[lang=php] $form->setAttribute('action',$this->url('user/add'));
Hors ligne
flobrflo a écrit:
oh, alors en fait tu appel mal ta route:
la tu appel la route user avec un paramètre action ce qui n'est pas possible puisque ta route est littérale donc sans paramètre justement.
il faut que tu appel la route add qui est ta route child :Code:
[lang=php] $form->setAttribute('action',$this->url('user/add'));
Ok, donc dans le cas de route 'Litteral', on ne met pas d'action, mais l'url directement. Donc ce que j'ai fait pour corriger est bon.
Merci.
Hors ligne
enfait tu ne met pas l'url directement, tu met les noms de tes routes.
Dans ton cas il se trouve que ça correspond à l'url ^^
[lang=php] $form->setAttribute('action',$this->url('baseroute/childroute/childchildroute...'));
EDIT :
si tu veux faire la même chose pour edit par exemple, ça donnerait ceci:
[lang=php] $form->setAttribute('action',$this->url('user/edit',array('id' =>$id))); //$form->setAttribute('action',$this->url('route/childroute',array('name_param' =>'value_param')));
Dernière modification par flobrflo (12-05-2014 10:34:19)
Hors ligne
Pages: 1