2016-04-27 22 views
9

ユーザがdomain/pageにアクセスすると、controller/action/100にルーティングする必要があります。 URLを介してパラメータを渡すのではなく、URLルールに追加する必要があります。yii2ルーティング - ルールでルーティングするパラメータ

以下のコードを設定ファイルに追加しました。

'urlManager' => [ 
    'rules' => [ 
     'login' => 'site/login', // working 
     'about' => 'cms/page/10' // Not Working 
     'about' => 'cms/page?id=10' // Not Working 
    ], 
], 

最初のルールはうまくいきます。

URLルールのルートのパラメータを渡すことはできますか?

答えて

7

あなたはdefaultsを使用して明示的にルールを宣言する必要があります。例えばUrl::to()はUrlManagerを使用しています(あなたが変換を防ぐためにしたい場合は、UrlManagerでURL​​を作成するときに、このルールに'mode' => \yii\web\UrlRule::PARSING_ONLYを追加

'urlManager' => [    
    'rules' => [ 
     'login' => 'site/login', 
     [ 
      'pattern' => 'about', 
      'route' => 'cms/page', 
      'defaults' => ['id' => 10], 
     ] 
    ], 
], 

をし、その規則と反対方向の作業、つまりUrl::to(['cms/page', 'id' => 10])はリンクaboutを生成します)

また、代わりにWebサーバーでリダイレクトを構成することを検討してください。

+0

robschさん、ありがとうございました。 – suneeth

関連する問題