@MarkLb

Как получить ссылку вида /action/slug, а не action?slug=slug через URL::to(0 в Yii2?

Здравствуйте. Имеется правило URL:

'/album/<slug:[a-z0-9_\-]+>' => '/site/album'

Но при попытке генерации URL через `Url::to()` получаю ссылку вида:

/album/slug=some-slug


Вместо желаемой:

/album/some-slug


Пробовал так, но не выходит:

Url::to(['/site/album', 'slug' => 'some-slug']);
Url::to(['/site/album', 'slug' => 'some-slug'], true);


Полная конфигурация URL-менеджера:

'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                '' => 'site/index',
                '<action>' => 'site/<action>',
                '<controller>' => '<controller>/index',
                '/album/<slug:[a-z0-9_\-]+>' => '/site/album',
            ],
        ],
  • Вопрос задан
  • 527 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
Ваши проблемы вызваны приоритетом выполнения url-правил. Для решения проблемы просто измените их порядок:
'rules' => [
    '' => 'site/index',
    '/album/<slug:[a-z0-9_\-]+>' => '/site/album',
    '<action>' => 'site/<action>',
    '<controller>' => '<controller>/index',
],
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@iSensetivity
бухгалтер, програміст-самоук
'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
...
            ],
        ],
Ответ написан
@AndreyMarkov
попробуйте без "/"

Url::to(['site/album', 'slug' => 'some-slug']);
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы