2017-10-19 16 views
0

開発中、私はurlManagerの問題に直面しました。Yii2、ルーターのオプションパラメータ

「カテゴリ」アクションのSiteControllerがあります。このアクションで使用することができます

public function actionCategory($id = null, $city = null, $location = null) 
{ 
    echo $id; 
    echo $city; 
    echo $location; 
} 

すべての可能な組み合わせ:

id, city, location = null 
id, city = null, location 
id, city = null, location = null 
id = null, city = null, location = null 
id = null, city = null, location 

私はその後、私は後に、変数に次の値を取得します、UrlManagerでルールを作成する方法がわかりませんリンクを押してください:

<h4><?= Html::a('ID City', ['/site/category', 'id' => 'barbershop', 'city' => 'Praha'], ['class' => 'btn btn-primary']) ?></h4> 
The return value from "category" action: 

id = 'barbershop' 
city = 'Praha' 
location = '' 

<h4><?= Html::a('ID Location', ['/site/category', 'id' => 'barbershop', 'location' => '23,65'], ['class' => 'btn btn-primary']) ?></h4> 
The return value from "category" action: 

id = 'barbershop' 
city = '' 
location = '23,65' 

<h4><?= Html::a('ID', ['/site/category', 'id' => 'barbershop'], ['class' => 'btn btn-primary']) ?></h4> 
The return value from "category" action: 

id = 'barbershop' 
city = '' 
location = '' 

<h4><?= Html::a('City', ['/site/category', 'city' => 'Praha'], ['class' => 'btn btn-primary']) ?></h4> 
The return value from "category" action: 

id = '' 
city = 'Praha' 
location = '' 

<h4><?= Html::a('Location', ['/site/category', 'location' => '14,23'], ['class' => 'btn btn-primary']) ?></h4> 
The return value from "category" action: 

id = '' 
city = '' 
location = '14,23' 

この問題をお手伝いしますか?

答えて

0

要件に応じて、コントローラとアクション名のルールのみを設定する必要があります。その他のフィールドはすべて$ _GETを通します。 Yii::$app->getRequest()->getQueryParam('param')メソッドを使用して取得できます。あなたは

'urlManager' => [ 
     'enablePrettyUrl' => true, 
     'showScriptName' => false, 
     'rules' => [ 
      '<controller:\w+>/<id:\d+>' => '<controller>/view', 
      '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', 
      '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
     ], 
    ], 
のようにきれいなURLの通常の規則を使用することができURLに対して

関連する問題