与Zend框架链接的链接
问题描述:
我试图在我正在处理的Zend Framework网站上为管理面板实现链接链接。我正在使用以下配置文件,希望“admin”路由使用“/ admin”路由,而“adminLogin”路由使用“/ admin/login”路由。与Zend框架链接的链接
<?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>
了一些更多的细节和链接路线的陷阱见an older answer of mine。
另外,值得注意的是,路由器自动将连锁路由名与短划线连接起来,因此,如果您需要明确使用登录路由,它现在将被命名为admin-adminLogin
。我建议将它重命名为login
。
答
这是错误的使用链。
只需为/ admin和/ admin/login声明一个路由。如果您使用多个路线类来确定一条路线的分辨率(如主机名和路径),链更有用。
所以,路由`admin`不匹配,当你尝试导航到`/ admin`你得到默认模块的索引控制器的索引行为? – jason 2009-07-30 13:40:47
这正是发生的情况。 – 2009-07-30 14:12:06