/ / Zend Framework:ナビゲーションXMLと重複するページ要素 - php、xml、zend-framework、navigation

Zend Framework:ナビゲーションXMLと重複するページ要素 - php、xml、zend-framework、ナビゲーション

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);