嗨,我正在尋找一些關於將請求路由到Yii框架中的自定義模塊的信息。將路由請求發送到模塊
我正在爲一個項目實現一個RestFul Api,並希望有一些方法可以簡單地將所有請求路由到api /到其他api所在的模塊。甚至比這更好的是,如果將api請求路由到一個自定義的UrlManager類,該類繼承模塊中的CUrlManager,然後處理這些路由,那就更好了。因此對mydomain/api/user/model的請求實際上會被延遲並由模塊中的UrlManager組件處理,而其他請求(即mydoamin.com/client/create)將僅由正常的yii應用程序處理。據我可以告訴這是不可能的!
因此,我會滿足於definig在我的配置映入像這樣
class UrlManager extends CUrlManager
{
protected function processRules()
{
if(!isset($_GET['r']))
{
$this->setUrlFormat('path');
$this->showScriptName=false;
$this->rules=array(
//Api Rest Patterns
array('api/list', 'pattern'=>'^api/user/<model:\w+>', 'verb'=>'GET'),
array('api/view', 'pattern'=>'^api/user/<model:\w+>/<id:\d+>', 'verb'=>'GET'),
array('api/update', 'pattern'=>'^api/user/<model:\w+>/<id:\d+>', 'verb'=>'PUT'),
array('api/delete', 'pattern'=>'^api/user/<model:\w+>/<id:\d+>', 'verb'=>'DELETE'),
array('api/add', 'pattern'=>'^api/user/<model:\w+>', 'verb'=>'POST'),
array('api/test', 'pattern'=>'^api/user/test/<model:\w+>'),
array('api/login', 'pattern'=>'^api/user/<model:\w+>/login'),
array('api/logout', 'pattern'=>'^api/user/<model:\w+>/logout'),
// Other controllers
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
'<action:\w+>'=>'site/<action>',
);
}
return parent::processRules();
}
}
我的問題是那麼的api路由的URL管理器類,我如何將請求路由到模塊控制器?即模塊/ RESTAPI /控制器/ UserApiController.php
array('ModuleController/action' , pattern=>'api/user/<model>' , 'verb'=>'GET)
我想過這個
'controllerMap' => array(
'api'=>'application.modules.RestApi.components.ApiManager',
),
但是我很肯定我需要訪問的兩個點,一個用於管理任務的API和一個處理對於用戶來說,所以目前我的控制器的結構是這樣的:
- RestApiController
- UserApiController(擴展RestApiController)
- AdminApiController(擴展RestApiController)
所以,如果有一種方式來動態路由的行動給孩子控制器,可能會奏效?希望我沒有在這裏混淆真的希望你們Yii Masters可以幫助解決這個問題!
在此先感謝
任何人有任何想法? –