3

我正在尝试为我正在处理的 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”路由到默认模块/控制器/操作。

我认为我必须在链接的工作方式上遗漏一些东西。非常感谢任何反馈

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. 我建议将其重命名为 simple 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 声明一个不同的路由。如果您使用多个路由类来确定一个路由的解析(如主机名和路径),则链会更有用。

于 2009-07-30T14:41:50.693 回答