我有这个路由
$router->addRoute('clinics',
new Zend_Controller_Router_Route('clinics/:clinicPath', array('controller' => 'clinics', 'action' => 'view')),
new Zend_Controller_Router_Route('clinics/create', array('controller' => 'clinics', 'action' => 'create1')));
如果我去'诊所/创建',我想创建诊所(做createAction),如果我去其他地方(例如'诊所/ happyTooth'),请查看诊所。
现在在任何链接上升查看事件。怎么改变这个? THX。
答案 0 :(得分:1)
我想最简单的方法是使用ClinicsController的magic __call函数并在那里进行匹配的方法调用(并使用默认路由)。
答案 1 :(得分:1)
您没有正确调用addRoute($name, $route)
。你应该调用它两次(每个路由一次),或者调用addRoutes(array($route1, $route2))
。这可能是导致问题的原因。
路线按相反顺序匹配,因此您的订单是正确的。 “create”是特定的,所以你想要它在列表的底部,所以它在它上面的动态路线之前匹配。
答案 2 :(得分:1)
我认为您需要在路线上添加规则,请尝试:
new Zend_Controller_Router_Route('clinics/:clinicPath',
array('controller' => 'clinics', 'action' => 'view'),
array('clinicPath' => '(?!create)[a-z\-0-9^.]+')),