使用Zend框架路由链接

时间:2009-07-29 22:30:21

标签: model-view-controller zend-framework routing chaining

我正在尝试为我正在处理的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”路由到默认模块/ controller / action。

我认为我必须错过链接如何工作的东西。 任何反馈非常感谢

3 个答案:

答案 0 :(得分: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>

有关详细信息和链接路线的详细信息,请参阅an older answer of mine

此外,值得注意的是路由器会自动将链接的路由名称与短划线连接起来,因此,如果您需要明确使用您的登录路由,则它当前将被命名为admin-adminLogin。我建议将其重命名为login

答案 1 :(得分:0)

由于存在错误,这可能不再适用。但是有一种解决方法。

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

答案 2 :(得分:-2)

这是对链的错误使用。

只需为/ admin声明一个路由,为/ admin / login声明另一个路由。如果您使用多个路由类来确定一个路由的分辨率(如主机名和路径),则链更有用。