我有使用多个参数设置网址规则的问题。 我在控制器"文章" 中有" description" 这样的操作:
public function actionDescription($aID, $aTitle){ ... }
然后我像这样设置网址规则:
'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>',
当我通过以下链接调用网址时:
<?= Html::a( Html::encode($model->aTeaser),
['article/description', 'aID' => $model->aID, 'aTitle' => $model->aTeaser],
['class'=>'link_article'])
?>
我仍然得到这个网址:
http://test.com/article/description?aID=323&aTitle=teaser+of+this+article
而不是:
http://test.com/article/description/323/teaser+of+this+article
答案 0 :(得分:1)
这是因为你解析了两次路线。 Html::a()
在网址上调用Url::to()
,因此无需自行执行此操作。到处都是空字符串的处理方式是什么?它应该是:
<?= Html::a(
Html::encode($model->aTeaser),
['article/description', 'aID' => $model->aID, 'aTitle' => $model->aTeaser],
['class' => 'link_article']
) ?>
PS。使用<aTitle:\s+>
的第二条规则有什么意义,您尝试匹配所有空白字符?
答案 1 :(得分:1)
如果您确定后面没有任何参数,则不必为最后一个参数指定转义序列:
SS_SUNKEN | SS_OWNERDRAW