Yii2 Url 多参数规则
Yii2 Url rules with multiple parameters
我在使用多个参数设置 url 规则时遇到问题。
我在控制器 "Article" 中有这样的操作 "description":
public function actionDescription($aID, $aTitle){ ... }
然后我设置 url 规则如下:
'Article/description/<aID:\d+>/<aTitle:\S+>' => 'article/description',
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
当我像这样通过 link 调用 url 时:
<?= Html::a( Html::encode($model->aTeaser),
['article/description', 'aID' => $model->aID, 'aTitle' => $model->aTeaser],
['class'=>'link_article'])
?>
我仍然明白这个 url:
http://test.com/article/description?aID=323&aTitle=teaser+of+this+article
而不是这个:
http://test.com/article/description/323/teaser+of+this+article
因为你解析了两次路由。 Html::a()
正在 URL 上调用 Url::to()
,因此您无需自己动手。到处都是空字符串是怎么回事?应该是:
<?= Html::a(
Html::encode($model->aTeaser),
['article/description', 'aID' => $model->aID, 'aTitle' => $model->aTeaser],
['class' => 'link_article']
) ?>
PS。 <aTitle:\s+>
的第二条规则在您尝试匹配所有空白字符时有何意义?
如果确定最后一个参数后面没有任何参数,则不必为最后一个参数指定转义序列:
'article/description/<aID:\d+>/<aTitle>' => 'article/description'
我在使用多个参数设置 url 规则时遇到问题。 我在控制器 "Article" 中有这样的操作 "description":
public function actionDescription($aID, $aTitle){ ... }
然后我设置 url 规则如下:
'Article/description/<aID:\d+>/<aTitle:\S+>' => 'article/description',
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
当我像这样通过 link 调用 url 时:
<?= Html::a( Html::encode($model->aTeaser),
['article/description', 'aID' => $model->aID, 'aTitle' => $model->aTeaser],
['class'=>'link_article'])
?>
我仍然明白这个 url:
http://test.com/article/description?aID=323&aTitle=teaser+of+this+article
而不是这个:
http://test.com/article/description/323/teaser+of+this+article
因为你解析了两次路由。 Html::a()
正在 URL 上调用 Url::to()
,因此您无需自己动手。到处都是空字符串是怎么回事?应该是:
<?= Html::a(
Html::encode($model->aTeaser),
['article/description', 'aID' => $model->aID, 'aTitle' => $model->aTeaser],
['class' => 'link_article']
) ?>
PS。 <aTitle:\s+>
的第二条规则在您尝试匹配所有空白字符时有何意义?
如果确定最后一个参数后面没有任何参数,则不必为最后一个参数指定转义序列:
'article/description/<aID:\d+>/<aTitle>' => 'article/description'