我正在尝试为我正在处理的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。
我认为我必须错过链接如何工作的东西。 任何反馈非常感谢
答案 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)
由于存在错误,这可能不再适用。但是有一种解决方法。
答案 2 :(得分:-2)
这是对链的错误使用。
只需为/ admin声明一个路由,为/ admin / login声明另一个路由。如果您使用多个路由类来确定一个路由的分辨率(如主机名和路径),则链更有用。