3

作業中のZendFrameworkサイトの管理パネルにルートチェーンを実装しようとしています。「admin」ルートが「/admin」でルーティングされ、「adminLogin」ルートが「/ admin / login」でルーティングされることを期待して、次の構成ファイルを使用しています。

<?xml version="1.0" encoding="UTF-8"?>
<routes>
    <admin>
        <route>admin</route>
        <defaults>
            <module>admin</module>
            <controller>index</controller>
            <action>index</action>
        </defaults>
        <chains>
            <adminLogin>
                <route>login</route>
                <defaults>
                    <module>admin</module>
                    <controller>login</controller>
                    <action>index</action>
                </defaults>
            </adminLogin>
        </chains>
    </admin>
</routes>

ただし、その構成では、「adminLogin」のみが機能します。ルート「admin」は、デフォルトのモジュール/コントローラー/アクションにルーティングします。

連鎖のしくみに何かが欠けているに違いないと思います。フィードバックをいただければ幸いです

4

3 に答える 3

1

チェーンの親ルート(この場合admin)は、実際のルートのように実際には一致しません。その唯一の目的は、トップレベルの一致をキャッチし、チェーンされた子に実際のルーティングを処理させることです。

次のように、チェーンの先頭に空の静的ルートを明示的に追加してみてください。

<chains>
    <index type="Zend_Controller_Router_Route_Static">
        <route></route>
        <defaults module="admin" controller="index" action="index" />
    </index>
    <login>
        <route>login</route>
        <defaults>
                <module>admin</module>
                <controller>login</controller>
                <action>index</action>
        </defaults>
    </login>
</chains>

連鎖ルートの詳細と落とし穴については、私の古い回答を参照してください。

また、ルーターはチェーンされたルート名をダッシュ​​で自動的に連結するため、ログインルートを明示的に使用する必要がある場合は、現在、名前が付けられていることに注意してくださいadmin-adminLogin。名前を単純に変更することをお勧めしますlogin

于 2009-07-30T16:10:03.827 に答える
0

バグのため、これは機能しなくなる可能性があります。ただし、回避策があります。

http://framework.zend.com/issues/browse/ZF-7848

于 2009-09-30T08:07:49.547 に答える
-2

これはチェーンの間違った使用法です。

/ adminのルートを宣言し、/ admin/loginのルートを宣言するだけです。チェーンは、複数のルートクラスを使用して1つのルート(ホスト名やパスなど)の解決策を決定する場合に役立ちます。

于 2009-07-30T14:41:50.693 に答える