/ / Zend Framework: Navigation XML und doppelte Seitenelemente - PHP, XML, Zend-Framework, Navigation

Zend Framework: Navigation XML und doppelte Seitenelemente - PHP, XML, Zend-Framework, Navigation

In XML würde ich normalerweise erwarten, dass das Folgende vollständig gültig und in einer sinnvollen Weise navigierbar ist, indem man etwas wie DomDocument von PHP verwendet:

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

Dies ist bei der Verwendung nicht der Fall Zend_Navigation. Jeder <page> Element muss einen eindeutigen Namen haben, also müssen Sie Folgendes tun:

<?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>

Das funktioniert, ist aber sehr nervig. Ich hätte lieber mehrere Seitenelemente, die den gleichen Namen haben und beim Erstellen vieler Seiten für die Navigation einfach kopiert und eingefügt werden können.

Warum benötigt jeder einen eindeutigen Namen?

Gibt es eine Möglichkeit, keinen eindeutigen Namen zu haben?

@Charles

Ja, der folgende Code wird zum Einlesen der Navigations-XML verwendet

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

$container = new Zend_Navigation($config);

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

@Gordon

Gute Frage...Ich benutzte diese Methode, wollte aber einen anderen Weg, der einfacher zu aktualisieren und zu lesen war. Die Array-Notation löst das Problem, das ich habe, aber es ist keine einfache Art, die Navigation für eine Site zu schreiben, besonders wenn es verschachtelte Elemente gibt. XML ist viel einfacher zu lesen und hat einen Sinn als die PHP-Arrays.

Zugegeben, das ist meine eigene Meinung und es ist eine langsamere Art, Navigationsdaten zu speichern und zu analysieren.

Antworten:

1 für die Antwort № 1

Sie können die erste XML-Struktur nicht verwenden, weil Zend_Navigation verwendet die Tag-Definition, um einen Teil der "Route" zu erstellen. Wenn Sie eine andere Art von XML-Struktur verwenden möchten, müssen Sie wahrscheinlich erweitern Zend_Navigation mit Ihrem eigenen Analyseprozess.

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

Eine andere Möglichkeit wäre, eine Klasse zu erstellen, um das XML-Dokument vor dem Senden zu analysieren und zu ändern Zend_Navigation.

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