我會建議你做一個靜態或動態路由,或者通過配置資源管理器,引導或通過前端控制器插件:
在bootstrap.php中定義靜態路由
實施例:
public function _initRoutes()
{
$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter(); // default Zend MVC routing will be preserved
// create first route that will point from nonexistent action in mobile module to existing action in default module
$route = new Zend_Controller_Router_Route_Static(
'mobile/some-controller/some-action', // specify url to controller and action that dont exist in "mobile" module
array(
'module' => 'default', // redirect to "default" module
'controller' => 'some-controller',
'action' => 'some-action', // this action exists in "some-controller" in "default" module
)
);
$router->addRoute('mobile-redirect-1', $route); // first param is the name of route, not url, this allows you to override existing routes like default route
// repeat process for another route
}
這有效地將用於/移動/一些控制器/一些動作路由請求到/默認/一些控制器/一些動作
一些控制器和一些行動應適當控制器和動作名稱所取代。
我正在使用靜態路由,如果您路由到精確的URL,那麼可以,但由於大多數應用程序在url中使用其他參數以控制器操作使用,所以最好使用動態路由。
在上面的例子中簡單地改變路線創建類Zend_Controller_Router_Route
和路由URL來"mobile/some-controller/some-action/*"
一個請求將被路由動態就像例如:
/mobile/some-contoller/some-action/param1/55/param2/66
will point to
/default/some-controller/some-action/param1/55/param2/66
有關ZF1檢查路由this link
不行的詳細信息!在我的情況下,控制器存在,但操作號和'$ dispatcher-> isDispatchable($ test)'總是返回'true'! – JellyBelly
@JellyBelly請檢查我的更新回答 – liyakat
感謝您的回覆,但是按照定義的$ className? – JellyBelly