ZF 1 でモジュール構造を使用せずに開始したプロジェクト ウィッチがあり、ユーザーを管理するためのモジュール構造を配置する必要があります (私にはより理にかなっています)。
私の問題は、「デフォルト」ルートが :controller/:action/:id を使用しようとする必要があり、モジュールルート
が :module/:controller/:action/:id を使用する必要があることです。ZF 1 のデフォルトは、 :id
しかし、私の「ロジック」には :id フィールドが必要です。どうすればこれを機能させることができますか?
私が試したことは次のとおりです。
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;
}
また、デフォルトの代わりにユーザー用の 2 番目のルートを作成しようとしましたが、機能しませんでした。
何か案は?私は何を間違っていますか?
このリンクを提供したときに、チャンネル #zftalk で freenode の irc からのヘルプが提供されました。
Bittarman: crash82: id に要件を追加して、[\d]+ にする必要があります
Bittarman: または、:id だけで Zend_Controller_Router_Route にチェーンされた Zend_Controller_Router_Route_Module のインスタンスを追加し、id のデフォルトを false に設定します。
Bittarman: また、_initModuleAutoload は無意味です Bittarman: モジュール ディレクトリに「デフォルト」モジュールを配置するのはちょっと間違ってい
ます Bittarman: そして、_initFrontController Bittarman: を使用して frontcontroller リソースの動作を停止します
Bittarman: したがって、resources.frontController は動作しなくなります。crash82: うーん... 非常に多くの問題 :( 、「デフォルト」モジュールをアプリケーションディレクトリに配置するだけで、他のモジュールはモジュール/パスから引き続きロードできますか?
Bittarman: はい :)
crash82: その Bittarman を試してみます: そして、ブートストラップを持つ各モジュールは、独自のモジュール リソース ローダー
Bittarman を提供します。
Bittarman: 驚くほど多くの人がやっています。
Bittarman: s/tht/that/