Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour bonjour, c'est encore moi ^^.
Voila, j'ai un petit souci avec l'aide de vue Navigation. Pour le moment je n'utilise que le rendu de menu coupler aux ACL mais je me retrouve déjà très limité.
En faite, j'aimerais ajouter des attribues data-* qui vienne de html5 mais apparemment on ne peut pas. (ou alors j'ai raté quelques chose, si c'est le cas je veut bien qu'on me dise comment faire)
Ce que je voudrais faire par exemple :
'admin' => array( array( 'label' => 'Accueil', 'module' => 'Admin', 'controller' => 'index', 'action' => 'index', 'class' => 'nav-header', 'data-toggle'=> 'collapse', ), ) // ou alors ça 'admin' => array( array( 'label' => 'Accueil', 'module' => 'Admin', 'controller' => 'index', 'action' => 'index', 'class' => 'nav-header', 'attributes' => array( 'data-toggle'=> 'collapse', ), ), )
J'ai donc fouillé un peut dans le framework pour voir comment je pourrait ajouté ça et j'ai trouvé que toutes les pages déclarer dans la navigation était 'transformé' en objet Zend\Navigation\Page\AbstractPage
Dans la méthode setOptions, on peut voir que pour chaque 'clé' => 'valeur' d'un page on va appeler $this->set($key, $value);
public function setOptions(array $options) { foreach ($options as $key => $value) { $this->set($key, $value); } return $this; }
Et dans cette fameuse méthode, zf2 appelle la fonction setClé($valeur). Donc setLabel(), setClass(), ...
public function set($property, $value) { if (!is_string($property) || empty($property)) { throw new Exception\InvalidArgumentException( 'Invalid argument: $property must be a non-empty string' ); } $method = 'set' . static::normalizePropertyName($property); if ($method != 'setOptions' && method_exists($this, $method) ) { $this->$method($value); } else { $this->properties[$property] = $value; } return $this; }
Pour ajouter des attribues il faudrait donc surcharger cette classe et ajouter des méthodes setDataToogle et getDataToogle pour faire ce que je souhaite. Mais il faudrait également surcharger les autres classe en rapport avec la navigation car elle dépendent de Zend\Navigation\Page\AbstractPage.
Je ne peut donc pas juste créer Perso\Navigation\Page\AbstractPage. Il faut aussi surcharge les aides de vue en rapport avec l'aide navigation, ainsi que Zend\Navigation\Page\Mvc ...
Je trouve que c'est un peut barbare de surcharger toute la partie de l'aide navigation. Est ce que quelqu'un voie une autre solution?
Hors ligne
Ne pas utiliser Zend Navigation ?
Hors ligne
Et si tu utilise renderPartial ?
http://framework.zend.com/manual/2.1/en … -example10
Hors ligne
finalement je m'en suis sortie en créant mes aide de vue navigation et menu. Comme ça je peut modifier le rendu html comme je le souhaite.
Hors ligne
Je pense qu'avec ce lien tu pouvais t'en sortir justement:
http://framework.zend.com/manual/2.1/en … -example10
Hors ligne
merci pour le lien, mais je souhaitait tous de même conserver la structure <ul><li> .....
J'ai donc surcharger le rendu de navigation en ajoutant les attribue que je souhaitait en fonction du niveau de liens dans arborescence.
Hors ligne