我有一個項目女巫我開始時沒有使用ZF 1模塊結構現在我需要放置一個模塊結構 管理用戶(對我來說更有意義)。我的問題「默認」路線應該試着去:controller /:action /:id和模塊路線
應該與:module /:controller /:action /:id默認從ZF 1是使用上面沒有:id
但我的「邏輯」需要:ID字段,我該如何使這項工作?ZF Zend_Controller_Router_Route_Module模塊默認路由
什麼,我試圖來:
protected function _initModuleAutoload()
{
$modelLoader = new Zend_Application_Module_Autoloader(
array('namespace' => 'DM',
'basePath' => APPLICATION_PATH . '/modules/default')
, array('namespace' => 'UM',
'basePath' => APPLICATION_PATH . '/modules/users')
);
$modelLoader->addResourceType('service', 'services', 'Service');
$modelLoader->addResourceType('serviceplugin', 'services/plugins', 'Service_Plugin');
return $modelLoader;
}
public function _initFrontController()
{
$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter();
$route1 = new Zend_Controller_Router_Route(
':module/:controller/:action/:id/',
array(
'id' => '\d+'
, 'module' => 'default'
, 'controller' => 'index'
, 'action' => 'index'
)
);
$router->addRoute('default', $route1);
$front->addModuleDirectory(APPLICATION_PATH . "/modules/");
$front
->registerPlugin(new Far_Access_Plugin_Identity(), 1)
->registerPlugin(new Far_Access_Plugin_Access(), 2)
->throwExceptions(true)
;
return $front;
}
還試圖爲用戶創造的,而不是默認的第二條途徑,但沒有奏效。
任何想法?我究竟做錯了什麼?
當我提供此鏈接時,freenode中irc的幫助已在頻道#zftalk中給出。
Bittarman:crash82:在它的id:添加要求的id,所以它必須是[\ d] +
Bittarman:或,只需添加 一個Zend_Controller_Router_Route_Module拴 Zend_Controller_Router_Route中只用的一個實例,默認設置爲 ,其ID爲false。
Bittarman:也_initModuleAutoload,是沒有意義的 Bittarman:具有在模塊目錄的「默認」模塊,是有點 錯誤
Bittarman:你從 停止FrontController設計資源由具有_initFrontController
Bittarman工作:所以resources.frontController將不再起作用。crash82:哼......這麼多問題:(,這樣我就可以放置 「默認」模塊到應用程序的目錄和任何其他模塊 可以繼續從模塊/路徑加載
?Bittarman:是的:)
crash82:要嘗試 Bittarman:和,每個具有引導模塊,提供它自己的模塊資源加載
Bittarman:所以,如果你去創造更多這樣的,你結束每個模塊有兩個。 Bittarman:你會驚訝有多少人在做這件事。
Bittarman:S/THT /是/
默認路由啓動ZF總是在路由時測試模塊。如果使用默認路由,添加模塊不會影響路由。只需添加模塊作爲第一個參數,它應該工作。如果你願意,看看'Zend_Controller_Router_Route_Module'中的代碼 – RockyFord 2012-04-30 04:49:03
是的,這是答案的一部分。 :-)謝謝 – 2012-04-30 21:32:47