Объединение маршрутов с Zend Framework - PullRequest
3 голосов
/ 30 июля 2009

Я пытаюсь реализовать цепочку маршрутов для админ-панели на сайте 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» направляет к модулю / контроллеру / действию по умолчанию.

Я думаю, что я что-то упускаю из-за того, как работает цепочка. Любая обратная связь с благодарностью

Ответы [ 3 ]

1 голос
/ 30 июля 2009

Родительский маршрут цепочки (в данном случае 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.

0 голосов
/ 30 сентября 2009

Это может больше не работать из-за ошибки. Хотя есть обходной путь.

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

0 голосов
/ 30 июля 2009

Это неправильное использование цепей.

Просто объявите маршрут для / admin и другой для / admin / login. Цепочки более полезны, если вы используете более одного класса маршрутов для определения разрешения одного маршрута (например, имени хоста и пути).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...