XMLでは、以下のものがPHPのDomDocumentのようなものを使って意味のある方法で完全に有効でナビゲート可能であることを期待しています。
<?xml version="1.0" encoding="utf-8"?>
<configdata>
<page>
<name>Home</name>
</page>
<page>
<name>Log in</name>
</page>
</configdata>
これは、使用している場合ではありません Zend_Navigation
。各 <page>
要素に固有の名前が必要なので、次のようにする必要があります:
<?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>
これは機能しますが、非常に迷惑です。私は多くの場合、複数のページ要素を同じ名前にすることができ、ナビゲーション用の多数のページを作成するときに簡単にコピーして貼り付けることができます。
それぞれにユニークな名前が必要なのはなぜですか?
一意の名前を持つ必要がない方法はありますか?
@Charles
はい、次のコードはナビゲーションXMLを読み込むために使用されます
$config = new Zend_Config_Xml(APPLICATION_PATH . "/configs/navigation.xml");
$container = new Zend_Navigation($config);
Zend_Registry::set("navigation", $container);
@Gordon
良い質問...私はこの方法を使用していましたが、更新と読み込みが簡単な別の方法が必要でした。配列の表記法は私が持っている問題を解決しますが、特にネストされた要素がある場合、サイトのナビゲーションを簡単に書く方法ではありません.PDFの配列よりも読みやすく、理解しやすいです。
これは私自身の意見であり、ナビゲーションデータの保存と解析の方法が遅いことです。
回答:
回答№1は1最初のXML構造を使用することはできません。 Zend_Navigation
タグ定義を使用して「ルート」の一部を作成します。別のタイプのXML構造を使いたい場合は、おそらく拡張する必要があります Zend_Navigation
あなた自身の解析プロセスで。
$config = new Zend_Config_Xml(APPLICATION_PATH . "/configs/navigation.xml");
$container new My_Navigation($config);
もう1つの方法は、XMLドキュメントをパースしてから変更するクラスを作成してから送信することです Zend_Navigation
.
$config = new Zend_Config_Xml(APPLICATION_PATH . "/configs/navigation.xml");
$navigationStructure = new My_Navigation_Parser($config);
$container new My_Navigation($navigationStructure);