at0m1x
@at0m1x

Yii2 UrlManager — почему не подставляются необязательные параметры?

Использую фреймворк Yii2.

В конфигурации есть правило для UrlManager'а:
....
'components' => [
    ...
    'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                ...
                [
                    'pattern' => '<some-param>/some-page',
                    'route' => 'some/route',
                    'defaults' => ['some-param' => 'default-value']
               ],
                ...
            ]
        ],
    ...
]
....


В коде, во многих местах используется этот роут:
echo Html::a('Some page', ['some/route']);

Но вместо формирования ссылки с дефолтным параметром:
default-value/some-page
формируется не правильная ссылка:
some/route

Вопрос: Для чего в rules можно прописывать defaults если они не подставляются при формировании ссылок?

По идее defaults значения для этого и нужны, что если где то при формировании ссылки не указаны параметры, значит надо поставить дефолтные значения.
  • Вопрос задан
  • 297 просмотров
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
1. Возможно есть правило, которое срабатывает вместо этого, надо сменить их порядок в этом случае. Покажите полный список правил или сами его подвигайте.
2. Вот так точно должно работать
'rules' => [
                   '<someparam>/some-page' => 'some/route',
               ],

а дефолтное значение можно в экшене задать
public function actionRoute($someparam = 'default_value'){
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы