/ / Zend Framework: XML de navigation et éléments de page en double - php, xml, zend-framework, navigation

Zend Framework: navigation XML et éléments de page en double - php, xml, zend-framework, navigation

En XML, je m'attend normalement à ce que les éléments suivants soient parfaitement valides et navigables de manière significative en utilisant quelque chose comme "DomDocument" de PHP:

<?xml version="1.0" encoding="utf-8"?>
<configdata>
<page>
<name>Home</name>
</page>
<page>
<name>Log in</name>
</page>
</configdata>

Ce n'est pas le cas lors de l'utilisation Zend_Navigation. Chaque <page> L'élément doit avoir un nom unique, vous devez donc faire:

<?xml version="1.0" encoding="utf-8"?>
<configdata>
<page_home>
<name>Home</name>
</page_home>
<page_log_in>
<name>Log in</name>
</page_log_in>
</configdata>

Cela fonctionne, mais est très énervant. J’ai de préférence plusieurs éléments de page pouvant porter le même nom et être facilement copiés et collés lors de la création de nombreuses pages pour la navigation.

Pourquoi chacun a-t-il besoin d'un nom unique?

Y a-t-il moyen de ne pas avoir un nom unique?

@Charles

Oui, le code suivant est utilisé pour lire dans le XML de navigation.

$config = new Zend_Config_Xml(APPLICATION_PATH . "/configs/navigation.xml");

$container = new Zend_Navigation($config);

Zend_Registry::set("navigation", $container);

@Gordon

Bonne question...J'avais l'habitude d'utiliser cette méthode, mais je voulais une autre manière plus facile à mettre à jour et à lire. La notation array résout le problème que j’ai, mais ce n’est pas un moyen facile d’écrire la navigation d’un site, en particulier lorsque des éléments sont imbriqués. XML est beaucoup plus facile à lire et à comprendre que les tableaux de PHP.

Certes, c’est ma propre opinion et c’est un moyen plus lent de stocker et d’analyser les données de navigation.

Réponses:

1 pour la réponse № 1

Vous ne pouvez pas utiliser la première structure XML, car Zend_Navigation utilise la définition de balise pour créer une partie de la "Route". Si vous souhaitez utiliser un autre type de structure XML, vous devrez probablement étendre Zend_Navigation avec votre propre processus d'analyse.

$config = new Zend_Config_Xml(APPLICATION_PATH . "/configs/navigation.xml");
$container new My_Navigation($config);

Une autre façon serait de créer une classe pour analyser et modifier le document XML avant de l'envoyer à Zend_Navigation.

$config = new Zend_Config_Xml(APPLICATION_PATH . "/configs/navigation.xml");
$navigationStructure = new My_Navigation_Parser($config);
$container new My_Navigation($navigationStructure);