Рейтинг:  0 / 5

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

Именованные параметры в yii 2

Именованные параметры

Правило URL может содержать несколько именованных параметров запроса, которые указываются в шаблоне в следующем формате: <ParamName:RegExp>, где ParamName определяет имя параметра, а RegExp - необязательное регулярное выражение, используемое для определения значения параметра. В случае, если RegExp не указан, значением параметра будет любая последовательность символов кроме слешей.



Note: Возможно указание только регулярного выражения для параметров. В таком случае, остальная часть шаблона будет считаться простым текстом.

После разбора URL, параметры запроса, соответствующие шаблону правила, будут доступны в массиве $_GET через компонент приложения request. При создании URL, значения указанных параметров будут вставлены в URL в соответствии с шаблоном правила.

Рассмотрим несколько примеров работы с именованными параметрами. Допустим, мы определили следующие три правила URL:

[
    'posts/<year:\d{4}>/<category>' => 'post/index',
    'posts' => 'post/index',
    'post/<id:\d+>' => 'post/view',
]

При разборе следующих URL:

  • /index.php/posts будет разобран в маршрут post/index при помощи второго правила;
  • /index.php/posts/2014/php будет разобран на маршрут post/index и параметры year со значением 2014, category со значением php при помощи первого правила;
  • /index.php/post/100 будет разобран на маршрут post/view и параметр id со значением 100 при помощи третьего правила;
  • /index.php/posts/php вызовет исключение [[yii\web\NotFoundHttpException]], если [[yii\web\UrlManager::enableStrictParsing]] имеет значение true, так как правило для разбора данного URL отсутствует. Если [[yii\web\UrlManager::enableStrictParsing]] имеет значение false (по умолчанию), значение posts/php будет возвращено в качестве маршрута.

При создании URL:

  • Url::to(['post/index']) создаст /index.php/posts при помощи второго правила;
  • Url::to(['post/index', 'year' => 2014, 'category' => 'php']) создаст /index.php/posts/2014/php при помощи первого правила;
  • Url::to(['post/view', 'id' => 100]) создаст /index.php/post/100 при помощи третьего правила;
  • Url::to(['post/view', 'id' => 100, 'source' => 'ad']) создаст /index.php/post/100?source=ad при помощи третьего правила. Параметр source не указан в правиле, поэтому он добавлен в созданный URL в качестве параметра запроса.
  • Url::to(['post/index', 'category' => 'php']) создаст /index.php/post/index?category=php без использования правил. При отсутствии подходящего правила, URL будет создан простым соединением маршрута, как части пути, и параметров, как части запроса.

Заберите ссылку на статью к себе, чтобы потом легко её найти ;)

Выберите, то, чем пользуетесь чаще всего:

Спасибо за внимание, оставайтесь на связи! Ниже ссылка на форум и обсуждение ; )


Обсудить эту статью

INFO: Вы отправляете сообщение как 'Гость'