2009-07-29 94 views
3

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

我认为我必须错过链接工作方式。 任何反馈非常感谢

+0

所以,路由`admin`不匹配,当你尝试导航到`/ admin`你得到默认模块的索引控制器的索引行为? – jason 2009-07-30 13:40:47

+0

这正是发生的情况。 – 2009-07-30 14:12:06

回答

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

-2

这是错误的使用链。

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