За последние 24 часа нас посетили 12472 программиста и 660 роботов. Сейчас ищут 368 программистов ...

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

Тема в разделе "Yii", создана пользователем at0m1x, 9 июл 2016.

Метки:
  1. at0m1x

    at0m1x Активный пользователь

    С нами с:
    18 дек 2011
    Сообщения:
    31
    Симпатии:
    0
    Использую фреймворк Yii2.

    В конфигурации есть правило для UrlManager'а:

    PHP:
    1. ....
    2. 'components'=>[
    3.     ...
    4.     'urlManager'=>[
    5.             'enablePrettyUrl'=>true,
    6.             'showScriptName'=>false,
    7.             'rules'=>[
    8.                 ...
    9.                 [
    10.                     'pattern'=>'<some-param>/some-page',
    11.                     'route'=>'some/route',
    12.                     'defaults'=>['some-param'=>'default-value']
    13.                ],
    14.                 ...
    15.             ]
    16.         ],
    17.     ...
    18. ]
    19. ....
    В коде, во многих местах используется этот роут:
    echo Html::a('Some page', ['some/route']);

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

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

    По идее defaults значения для этого и нужны, что если где то при формировании ссылки не указаны параметры, значит надо поставить дефолтные значения.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.236
    Симпатии:
    1.716
    Адрес:
    Молдова, г.Кишинёв
    Можно предложить, чтобы такое поведение добавили в framework при генерации ссылок.
     
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.451
    Симпатии:
    1.718
    defaults нужны для другого. В таком виде не знаю, как будет работать, а вот в таком:
    Код (PHP):
    1. [
    2.          'pattern' => 'posts/<page:\d+>/<tag>',
    3.          'route' => 'post/index',
    4.          'defaults' => ['page' => 1, 'tag' => ''],    
    5. ],
    при вызове просто /posts будут подставлены 1 вместо page и '' вместо tag.[/code]
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.236
    Симпатии:
    1.716
    Адрес:
    Молдова, г.Кишинёв
    @mkramer но, то что предлагает автор поста, было уместно добавить Yii2. Он говорит об создании ссылки, а не совпадении пути.
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.451
    Симпатии:
    1.718
    Можно предложить. Тем более что на http://yiiframework.ru/forum/ постоянно тусуется и отвечает на вопросы один из соавторов фреймворка, и там есть тема с предложениями. Но в данный момент такой функционал отсутствует.
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.236
    Симпатии:
    1.716
    Адрес:
    Молдова, г.Кишинёв