我通过扩展 Zend_Rest_Controller 实现了一个 RESTful 服务。服务很好。我只有一个实际上具有 RESTful 行为的控制器。所以我在引导程序中只为那个控制器添加了其余路由。
protected function _initRestRoute()
{
$this->bootstrap('frontController');
$frontController = Zend_Controller_Front::getInstance();
$restRoute = new Zend_Rest_Route($frontController, array() , array('default' => array('MyserviceController')));
$frontController->getRouter()->addRoute('rest', $restRoute);
}
当我运行我的门户 zend 应用程序时,问题就开始了。当我构造 URL 时,索引控制器布局中的链接错过了 action 参数。例如,网络控制器中动作主页的索引布局上的链接如下。
$this->url(array('controller'=>'network','action'=>'homepage','module'=>'default'));
这应该返回“localhost/projectname/public/network/homepage”,而不是返回“localhost/projectname/public/network”。仅当布局由默认控制器(即 IndexController)加载时才会出现此行为。如果我从引导程序中删除 zend rest 路由,路由问题就会消失。只要我提到其余请求必须路由到哪个控制器,就应该不是问题。但这会影响默认控制器路由。