Model view controller 使用Zend框架的路由链接

Model view controller 使用Zend框架的路由链接,model-view-controller,zend-framework,routing,chaining,Model View Controller,Zend Framework,Routing,Chaining,我正试图为我正在工作的Zend Framework站点上的管理面板实现路由链接。我使用下面的配置文件希望“admin”路由使用“/admin”,而“adminLogin”路由使用“/admin/login” 管理 管理 指数 指数 登录 管理 登录 指数 但在这种配置下,只有“adminLogin”可以工作。路由“admin”路由到默认模块/控制器/操作 我想我一定错过了链锁的工作原理。 非常感谢任何反馈这是链条的错误使用 只需为/admin声明一个路由,为/admin/login声明另一个

我正试图为我正在工作的Zend Framework站点上的管理面板实现路由链接。我使用下面的配置文件希望“admin”路由使用“/admin”,而“adminLogin”路由使用“/admin/login”


管理
管理
指数
指数
登录
管理
登录
指数
但在这种配置下,只有“adminLogin”可以工作。路由“admin”路由到默认模块/控制器/操作

我想我一定错过了链锁的工作原理。
非常感谢任何反馈

这是链条的错误使用


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

链的父路由(在本例中,
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
。我建议将其重命名为simply
login

由于一个bug,这可能不再有效。不过,还有一个变通办法


因此,路径
admin
不匹配,当您尝试导航到
/admin
时,您会得到默认模块的索引控制器的索引操作?这正是发生的情况。这实际上是对链的一个很好的使用。现在,他可以通过更改父链的路由参数来更改整个管理部分的基本url。就这样,应用程序的其余部分只关心路线名称。这是对链的完全正确使用。即使不使用多个route类,链也是非常有用的。
<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>