Bonjour,

Après avoir réduit mes controlleurs pour faire le gros du boulot au modèle, je m'attaque à la vue. En effet, dans le layout, j'utilise un partialLoop() sur un tableau avec des entrées diverses (c'est une liste de liens). Or, ces liens ne peuvent être déterminés par la vue.

Alors, je me suis ainsi posé la question : est-il normal (ou bien) de justement mettre

Code : Sélectionner tout - Visualiser dans une fenêtre à part
$this->url(array(...), 'routeur', bool)
Dans une vue. D'autant que récemment j'ai transformé mes Rowset lu par la vue en array(), et mes appel à Zend_Auth dans la vue, par simplement une variable $userName. Ainsi, le controlleur s'occupe des données, et la vue ne fait que les afficher sans logique particulière.

Pour le url(), c'est autant une question de "bonnes pratiques" que de réflexion : il m'arrive de modifier les noms des actions ou de controlleurs, j'utilise une recherche de fichier pour ça, mais quelque part, est-ce vraiment de la responsabilité d'une vue de composer une url (et de le savoir). D'autant, que si demain je crée une vue XML ou JSON, je devrais faire une redodance d'appel et que modifier l'action reviendrait à modifier tous ces fichiers, alors que la vue ne devrait être là que pour adapter les données au contexte HTML (non ?). D'ailleurs pour le JSON, je me passe de la vue (j'envoie des données brutes, mais je n'attends pas que mon destinataire fasse une valeur ajoutée comme celle citée avec les données envoyées. Dans le cas d'une URL, je lui envoie une URL composée, et non pas à lui de la composer avec un nom d'action qu'il aura stocké qq part).

J'imagine que dans le cas d'une itération, je peux faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
]$this->view->urlFormat = $this->_helper->url(array(.., 'grille' => '%s'));
$this->view->elements = array('salut'=>'125', 'bonjour'=>'189');
Et dans la vue :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
foreach ($this->elements as $name=>$value)
{
   echo '<li>'.sprintf($this->urlFormat, $value).'</li>';
}
Si ce n'est le détail technique que %s est modifié par urlencode (mais j'ai bien dit détail non ?).

Quel est votre avis ? Avis de "puriste" je parle : on est d'accord, la bidouille et les exceptions sont toujours permises. Qui peut le plus (== "le mieux") peut le moins.

Merci par avance à vous, et cordialement,