質問

作業中の Zend Framework サイトの管理パネルにルート チェーンを実装しようとしています。「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」はデフォルトのモジュール/コントローラー/アクションにルーティングされます。

チェーンの仕組みに何か欠けているのではないかと思います。フィードバックは大歓迎です

役に立ちましたか?

解決

チェーンの親ルート (この場合、 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.

他のヒント

これは、バグが原因で動作しなくなる可能性があります。ただし、回避策があります。

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

これはチェーンの誤った使用です。

/ adminのルートと、/ admin / loginのルートを宣言するだけです。複数のルートクラスを使用して1つのルート(ホスト名やパスなど)の解決を決定している場合、チェーンはより便利です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top