Yii2 не создает хороший URL-параметр
Я использую менеджер URL в Yii2 для создания хороших URL-адресов, которые работают, если в URL-адресе нет параметров.
Я установил следующий конфиг:
urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
],
],
С помощью Url::to(array('crtl/action', 'paramx' => 'computer:net', 'paramy' => 'abc'))
приводит к следующему URL:
HTTP: // локального / Crtl / действие paramx = компьютер: чистые и paramy= а
Но мне нужно следующее:
HTTP: // локальный / Crtl / действие / paramx / Компьютер: сеть / paramy / а
Как можно настроить параметры URL-адреса на?
2 ответа
Если ваш аргумент является числом, тогда правило менеджера URL будет:
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>'
Если ваш аргумент является текстовым, то правилом менеджера URL будет:
'<controller:\w+>/<action:\w+>/<name:\w+>' => '<controller>/<action>'
В случае, если мы объявляем симпатичный URL, если нам нужен результат с последующим '/', тогда нам также нужно определить правила URL для маршрутизации.
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<controller:\w+>/<action:\w+>/<id:\w+>/<ids:\w+>' => '<controller>/<action>',
],
],
Таким образом, мы можем назвать эту маршрутизацию как:
<a href="<?php echo \yii\helpers\Url::base(true)."/site/testing/5/8"?>">
<a href="<?php echo \yii\helpers\Url::to(['site/testing','paramx'=>'x1','paramy'=>'y1'])?>">
В первом случае мы создали URL, как мы хотим. Во втором случае мы использовали url: to для маршрутизации, как мы видим, мы указали paramX и param y в параметре.
Для обоих это будет результат,
public function actionTesting() {
print_r(Yii::$app->request->getQueryParams());
die();
}//will get the query params that we had sent
Output will be:Array ( [paramx] => x1 [paramy] => y1 ) ;
Так как вы спрашиваете, это не шаблон маршрутизации URL для yii2, это предпочтительный способ для yii2