Zend:如何路由一些动作

时间:2010-11-05 16:32:41

标签: zend-framework routing

我有这个路由

$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。

3 个答案:

答案 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^.]+')),