UrlManager как сделать url в виде path пути?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
Dementorpasha
Сообщения: 39
Зарегистрирован: 2013.06.08, 07:33

UrlManager как сделать url в виде path пути?

Сообщение Dementorpasha »

Как написать правило для UrlManager что бы url был ввиде path?
Например url вида www.site.com/goods/index/category/5/id/3 и т.д парсилось как controller/action + остальное как пара ключ и значение /key1/value1/key2/value2 в независимости от кол-ва

Чтобы $_GET в таком случае например был

Код: Выделить всё

array(
 'category' => 5,
 'id' => 3,
)
Аватара пользователя
Dementorpasha
Сообщения: 39
Зарегистрирован: 2013.06.08, 07:33

Re: UrlManager как сделать url в виде path пути?

Сообщение Dementorpasha »

В Yii1 был специальный параметр /* неужели такого отличного параметра нет в Yii2 для переменного числа аргументов?
Пример:

Код: Выделить всё

'<controller:\w+>/<action:\w+>/*'=>'<controller>/<action>'
 
Аватара пользователя
Dementorpasha
Сообщения: 39
Зарегистрирован: 2013.06.08, 07:33

Re: UrlManager как сделать url в виде path пути?

Сообщение Dementorpasha »

Покопавшись в коде я пришёл к выводу что такого функционала в Yii2 нет. Поэтому взял часть кода с Yii1 и переписал стандартный класс yii\web\UrlRule и переопределил его в конфигурации.
Было бы наверно логичнее переписать только два метода createUrl и parseRequest но сделать это полноценно из-за приватных свойств $_paramRules, $_routeParams и др. полноценно не получилось т.к. насколько я понимаю нужно было бы переписывать и init() метод и может что-то ещё... Поэтому, дублировал весь класс + изменения :cry:

Код: Выделить всё

<?php
return [
    // ...
    'components' => [
        'urlManager' => [
           'enablePrettyUrl' => true,
           'showScriptName' => false,
           'ruleConfig' => ['class'=> 'app\components\UrlRule'],
           'rules'=>[
                '<controller:\w+>/<action:\w+>/*' => '<controller>/<action>',
           ],
        ],
    ],
];
 
Может я чего то не понимаю, но чем был плох этот функционал в Yii1, почему его не реализовали в Yii2?
Ответить