@A1eksandr

Yii2 Как правильнее реализовать, добавление ко всем ссылкам параметр — город?

Подскажите как проще реализовать подстановку параметра - город ко всем url.

Допустим я прописал при этом такие rules
[
                    'pattern' => '<city:\w+>/<controller>/<action>/<id:\d+>',
                    'route' => '<controller>/<action>',
                    'suffix' => ''
                ],
                [
                    'pattern' => '<city:\w+>/<controller>/<action>/',
                    'route' => '<controller>/<action>',
                    'suffix' => ''
                ],
                [
                'pattern' => '<controller>/<action>/<id:\d+>',
                'route' => '<controller>/<action>',
                'suffix' => ''
                ],


При этом задаю Url например так:
$city = 'Moscow' // допустим город задан Москва.
$url = Url::toRoute(['/my-controller/my-action', 'id' => 45, 'city' => $city);


Так работает, но мне придется во все вызовы Url::toRoute добавлять параметр city, что не удобно. Может быть есть способ задавать параметры в маршруте по умолчанию? Или может быть есть еще какой-нибудь способ решения этой задачи. Есть мысли заменить Url::toRoute на свой метод, но этот вариант тоже не очень нравится.
  • Вопрос задан
  • 985 просмотров
Решения вопроса 1
@A1eksandr Автор вопроса
Решил расширением класса urlManager и переопределением метода createUrl

class MyUrlManager extends UrlManager
{

    public function createUrl($params)
    {

        if(Yii::$app->params['city'])
            $params['city'] = Yii::$app->params['city'];

        return parent::createUrl($params);

    }


}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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