Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 具有多个参数的Yii2 Url规则_Php_Regex_Yii2_Yii2 Basic App - Fatal编程技术网

Php 具有多个参数的Yii2 Url规则

Php 具有多个参数的Yii2 Url规则,php,regex,yii2,yii2-basic-app,Php,Regex,Yii2,Yii2 Basic App,我无法使用多个参数设置url规则。 我在controller“Article”中有这样的动作“description”: public function actionDescription($aID, $aTitle){ ... } 'Article/description/<aID:\d+>/<aTitle:\S+>' => 'article/description', '<controller:\w+>/<id:\d+>' =&g

我无法使用多个参数设置url规则。 我在controller“Article”中有这样的动作“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>',
然后我设置如下url规则:

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>',
与此相反:

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.
第二条规则的要点是什么,您试图匹配所有空白字符?

这是因为您分析了两次路由
Html::a()
正在对Url调用
Url::to()
,因此无需自己执行。到处都是空字符串怎么办?应该是:

<?= Html::a(
    Html::encode($model->aTeaser), 
    ['article/description', 'aID' => $model->aID, 'aTitle' => $model->aTeaser], 
    ['class' => 'link_article']
) ?>


PS.
第二条规则的要点是什么,您尝试匹配所有空白字符?

如果您确定最后一个参数后面没有任何参数,则无需指定转义序列:

'article/description/<aID:\d+>/<aTitle>' => 'article/description'
'article/description/'=>'article/description'

如果您确定最后一个参数后面没有任何参数,则不必为其指定转义序列:

'article/description/<aID:\d+>/<aTitle>' => 'article/description'
'article/description/'=>'article/description'

谢谢。你的回答帮助我理解
Html::a()
调用
Url::to()
。所以我删除了
Url::to()
。但我使用@topher-answer以我想要的方式获取这些URL。谢谢你的帮助和清晰的解释。嗯,真的吗?所以,只要从规则中删除
\S+
,并将
Url::toRoute()
放在
Html::a()
中,就可以解决您的问题了?在它起作用之前,我也从
Html::a()
中删除了
Url::toRoute()
。两个答案都很有帮助。谢谢那么请回答你的问题。你的回答帮助我理解
Html::a()
调用
Url::to()
。所以我删除了
Url::to()
。但我使用@topher-answer以我想要的方式获取这些URL。谢谢你的帮助和清晰的解释。嗯,真的吗?所以,只要从规则中删除
\S+
,并将
Url::toRoute()
放在
Html::a()
中,就可以解决您的问题了?在它起作用之前,我也从
Html::a()
中删除了
Url::toRoute()
。两个答案都很有帮助。谢谢那么请回答你的问题。它正在工作。我错过了这个解释。谢谢。它正在工作。我错过了这个解释。