对于你的问题,我找到了一些答案。我想这完全取决于您想如何构建 Zend 框架软件。
据我了解,您有一个名为 Company 的控制器。然后,它有各种动作,包括 productOverviewAction() 等。
所以,这里有一些“几乎有”的解决方案——然后我会解决你目前的困境。:)
第一个可能的答案
您可能希望使用控制器公司来获取公司特定信息。也许您会为产品信息创建一个名为 Product 的控制器。然后,您实际上会想要访问 /product/[unique-id]/overview 之类的东西 - 不错的 URL。这是匹配的路线:
$route = new Zend_Controller_Router_Route(
'product/:productCode/:action',
array(
'controller'=>'product'
)
);
如您所见,它甚至不是正则表达式,所以它可以很快!
第二个可能的答案
您需要正则表达式的原因是该操作与 url 不匹配,而是由它的一部分组成。但是,假设您将 Company::productOverviewAction() 更改为 Company::OverviewAction() - 然后您可以使用以下路线:
$route = new Zend_Controller_Router_Route(
'company/:productCode/:action',
array(
'controller'=>'company'
)
);
但是,我知道这不是你问的...
几乎准确的答案
无需修改路由类,可以使用以下路由器:
$route = new Zend_Controller_Router_Route(
'company/:productCode/:action',
array(
'controller'=>'company'
)
);
然后,由于它被定向到每个操作,您可以代理 CompanyController 中的操作。例如:
public function overviewAction()
{
return $this->productOverviewAction();
}
*注意:我没有使用 _forward() 来重新调度(我认为会发生这种情况......)
祝你好运!