0

と があり'urlFormat'=>'path'ます。'showScriptName'=>falseurlManager

コントローラー/アクションとしてプロキシ/読み取り、パラメーターとして article=>some_name があります。

次のようなリンクを作成するたびに: $this->createUrl('proxies/read', array('article'=>$name));

結果は次のタイプの URL です。

proxies/read?article=socks5_proxy_list

クエリ パラメータをダンプし、URL を次のように再フォーマットしたいと思います。

controller/action/param_name/param_value

この場合、次のようになります。

proxies/read/article/socks5_proxy_list

私の現在の「ルール」は次のようになります。

'rules'=>array(
  '<controller:\w+>/<id:\d+>'=>'<controller>/view',
  '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
  '<controller:\w+>/<action:\w+>/article/<article:\w+>'=>'<controller>/<action>/article/<article>',
  '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),

しかし、それらは機能していないようです。

4

3 に答える 3

1
  1. これを機能させるためのショートカット:

    $this->createUrl('proxies/read/article/'.$name);
    

    そして、カスタム ルールなしで urlManager ルールを残します。

  2. 別の方法:

    // urlManager
    'rules'=>array(// order of rules is also important
      '<controller:\w+>/<action:\w+>/article/<article:\w+>'=>'<controller>/<action>',
      '<controller:\w+>/<id:\d+>'=>'<controller>/view',
      '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
      '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
    ),
    

    上記の配列では、最初に新しいルールを配置して、そのようなパターンが発生するたびにそのルールが適用されるようにしています。他のルールがある場合は、パターンに一致するより一般的なルールの前に、このルールが表示されるようにしてください。経験則: 一般的なルールの前に、より具体的なルールを表示する必要があります。

    ビューで URL を作成します。

    $this->createUrl('proxies/read', array('article'=>$name));
    
  3. デフォルトの「ユーザーフレンドリーな url」ルールは必要なく、パス形式の URL のみが必要な場合は、配列を指定して空'urlFormat'=>'path'のままにしておくか、すべて一緒に省略します。'rules'

まだお読みでない場合は、決定版ガイドのURL 管理ガイドをお読みください。

于 2012-09-12T20:51:16.293 に答える
0

ルールなんていらない..

http://yourhost.com/mycontroller/dosomething/param1/value/param2/value

class MyController extends Controller {
   public function actionDosomething($param1, $param2) {
   }
}

createUrl() については。パラメータのキー=>値配列を2番目のパラメータとして渡します

http://www.yiiframework.com/doc/api/1.1/CController#createUrl-detail

于 2012-09-12T15:49:02.620 に答える
0

これらの一連のルールを試してください

'rules'=>array(
  '<controller:\w+>/<id:\d+>'=>'<controller>/view',
  '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',  
  '<controller:\w+>/<action:\w+>/*'=>'<controller>/<action>',
),
于 2012-09-12T17:18:39.000 に答える