为什么在Zend框架1.12中,第一个动作/第一个路由是为任何url打开的


why the first action/ first route is opened for any url in routing in Zend framework 1.12

我在bootstrap.php文件

中编写了以下代码
    protected function _initRoutes() {
     $routers = Zend_Controller_Front::getInstance()->getRouter();
     $adminadd = new Zend_Controller_Router_Route('/:cityadd/', array('module' => 'user', 'controller' => 'city', 'action' => 'add'));
$routers->addRoute('addcity', $adminadd);
     $routing = Zend_Controller_Front::getInstance()->getRouter();
     $adminedit = new Zend_Controller_Router_Route('/:cityedit/', array('module' => 'user', 'controller' => 'city', 'action' => 'edit'));
$routing->addRoute('edit-city', $adminedit);
    }

我的项目名称是demo

在我的浏览器中,当我输入URL http://localhost/demo/public/cityadd时,打开的页面是添加操作页面,即

View script for controller City and script/action name add

当我输入URL http://localhost/demo/public/cityedit时,打开的页面也是添加动作页面,即

View script for controller City and script/action name add

必须重定向到View script for controller City and script/action name edit

为什么打开相同的页面,或者为什么对于给定的URL,页面被重定向到相同的操作

问题是你在路由中使用了变量。变量前面有一个冒号。一个只包含一个变量的路由几乎可以匹配任何东西。

试着写不带冒号的路由:

protected function _initRoutes()
{
    $routers = Zend_Controller_Front::getInstance()->getRouter();
    $adminadd = new Zend_Controller_Router_Route('/cityadd/', array('module' => 'user', 'controller' => 'city', 'action' => 'add'));
    $routers->addRoute('addcity', $adminadd);
    $routing = Zend_Controller_Front::getInstance()->getRouter();
    $adminedit = new Zend_Controller_Router_Route('/cityedit/', array('module' => 'user', 'controller' => 'city', 'action' => 'edit'));
    $routing->addRoute('edit-city', $adminedit);
}
相关文章: