http://www.yiiframework.com/doc-2.0/guide-helper-html.html#hyperlinks に記載されている方法でハイパーリンクを生成しようとしています
Html::a('<b>Register</b>',
['story/create', array('id' =>39,'usr'=>'11')],
['class' => 'profile-link'])
story/create/id/39/usr/11
のようなURLを取得したい
しかし、それは
story/create?1%5Bid%5D=39&1%5Busr%5D=1
私はyii2のクリーンURL機能を有効にしています
'urlManager' => [
'class' => 'yii\web\UrlManager',
// Disable index.php
'showScriptName' => false,
// Disable r= routes
'enablePrettyUrl' => true,
'rules' => array(
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
], also.
どうすればこれを達成できますか?
Generate url
を使用してそのように使用します(詳細 http://www.yiiframework.com/doc-2.0/guide-helper-url.html を参照):
Html::a('<b>Register</b>',
['story/create', 'id' =>39,'usr'=>'11'],
['class' => 'profile-link'])
UrlManagerに新しいルールを入力します。
rules' => array(
....
'story/create/<id:\d+>/<usr:\d+>' => 'story/create',
),
出力URLは次のようになります。
story/create/39/11
そしてコントローラーで:
public function actionCreate($id, $usr)
そしてYii2はこのパラメーターを提供します。
uRLを動的に作成する
Html::a('<b>Register</b>',
['story/create', 'id' =>39,'usr'=>'11'],
['class' => 'profile-link'])
UrlManager構成ルール:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>/<usr:\d+>' => '<controller>/<action>',
],
],
出力URLは次のようになります。
story/create/39/11
別の便利な方法:
UrlManagerルールを
'rules'=>array('/controller/action/<limit>/<offset>'=>'/controller/action/'),
Url controller/action/100/20でアクセスできます