Paramètre d'URL qui persiste
Bonjour les Zenders !
Suite à ce message réactivant une de mes demandes d'il y a presque un an, j'ai mis en oeuvre la solution suggérée par Maïtre Pylos mais le paramètre passé dans l'URL persiste sur un lien qui pourtant ne l'inclut pas.
La vue appelante gereretablissements/ajouter.phtml contient un Zend_Form_Element_Select contenant la liste des types d'établissements existants en BDD, suivi d'un lien qui ouvre la vue gerertypesetablissements/ajouter avec en paramètre dans l'URL '/from/gereretablissements_ajouter', c'est à dire le contrôleur et l'action qui ouvre l'ajout d'un type d'établissement :
Code:
1 2 3 4 5 6 7 8 9 10
| <form action="<?php echo $this->url(array('action'=>'ajouter')); ?>" method="post">
<?php echo $this->form->etb_id_type_etablissement;?>
<a href="<?php echo $this->url(array('controller'=>'gerertypesetablissements',
'action'=>'ajouter',
'from'=>'gereretablissements_ajouter'
)
)
;?>" >
Ajouter un type d'établissement
</a><br /> |
Dans le contrôleur gerertypesetablissements.php, j'ai ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public function ajouterAction()
{
$this->view->action = 'ajouter';
// Recherche de la vue éventuelle qui a lancé l'action
unset($source);
$source = $this->_request->getParam('from');
//...
// Redirection vers la vue source
if(isset($source))
{
// $source est du type 'controleur_action'
$param = explode('_', $source);
$cible = $param[0].'/'.$param[1].'/te_id/'.$te_id;
}
else
{
$cible = '/gerertypesetablissements/index';
}
$this->_redirect($cible); |
=> Je récupère bien le paramètre from et quand j'ai ajouter mon nouveau type d'établissement, je retourne vers la vue appelante gereretablissements/ajouter et je passe en paramètre l'identifiant du type d'établissement ajouter afin de positionner le Zend_Form_Element_Select sur cette valeur.
Pour ce faire, dans gereretablissements/ajouter, j'ai ceci :
Code:
1 2 3 4 5 6
| // Recherche du type d'établissement éventuellement ajouté à la liste
unset($param);
$param = $this->_request->getParam('te_id');
$form->etb_id_type_etablissement->setValue($param);
$this->view->form = $form; |
Le processus fonctionne bien mais le problème est que maintenant le lien "Ajouter un type d'établissement" pointe sur "/gerertypesetablissements/ajouter/te_id/10/from/gereretablissments/ajouter", c'est à dire qu'il a conservé le paramètre te_id !
Pire, les autres liens de la page ont aussi ce paramètre inutile en fin d'URL, ainsi que les liens des autres pages !
Une idée de la cause et pour éviter ça ?