3

yiiにはパラメータを無制限にする方法がありますか

たとえば、モジュール/admin/があります

'urlManager'=>array(
  'urlFormat'=>'path',
    'showScriptName'=>false,
    'caseSensitive'=>false,
    'rules'=>array(
      '<controller:\w+>/<id:\d+>'=>'<controller>/view',
      '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
      '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',                
      'admin/<controller:\w+>/<action:\w+>/<id:\d+>' => 'admin/<controller>/<action>',
      'admin/<controller:\w+>/<action:\w+>'=>'admin/<controller>/<action>',          
    ),
  ),

管理モジュール内では、すべてのアクションに無制限のパラメーターを設定できる必要があります。たとえば、次のようになります。

 /admin/anycontroller/anyaction/anything
 /admin/anycontroller/anyaction/anything/anything2
 /admin/anycontroller/anyaction/anything/anything2/anything3
 /admin/anycontroller/anyaction/anything/anything2/anything3/anything4 
 ... and so on

ルールで1つずつ定義する必要がありますか?またはこれを行うためのショートカットはありますか?

コントローラーのアクションでそれをキャッチする方法は?

4

1 に答える 1

5

ショートカットがあります:

'admin/<controller:\w+>/<action:\w+>/*'=>'admin/<controller>/<action>'

つまり、ルールに/*

これはより一般的なルールであり、多くのURLをキャッチできるため、下部に配置するか、少なくとも特定のルールの後に配置することをお勧めします。

// ... other specific rules ...
'<controller:\w+>/<action:\w+>/<id:\w+>'=>'<controller>/<action>', // specifically for id
// ... other specific rules ...
'admin/<controller:\w+>/<action:\w+>/*'=>'admin/<controller>/<action>'

あなたの場合:

'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
'admin/<controller:\w+>/<action:\w+>/<id:\d+>' => 'admin/<controller>/<action>',
'admin/<controller:\w+>/<action:\w+>'=>'admin/<controller>/<action>',
'admin/<controller:\w+>/<action:\w+>/*'=>'admin/<controller>/<action>'

アクションでそれをキャッチするには、次のようにアクションのパラメーターを指定しないでください。

public function actionSomething() {
    // instead use $_GET
    $params=$_GET;

}

しかし、それはあなたがすでに持っている定義でも機能するはずです:public function actionAnyAction($id=0,$type='',$type2='')

于 2013-02-13T05:01:52.930 に答える