Задать вопрос

Yii2 ЧПУ как указать в route полученный параметр из запроса?

Не мог найти или правильно сформировать вопрос. Столкнулся с такой проблемой:
url: site.ru/module/controller/?handler=action
Я хочу, чтобы было перенаправление на site.ru/module/controller/action
Пытался в правилах указать вот такое
[
      'pattern' => 'module/controller/<handler:\w+>',
      'route' => 'module/controller/<handler>'
]

Подскажите, как правильно написать правило и можно ли использовать в route?
  • Вопрос задан
  • 352 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
mhthnz
@mhthnz
PHP, YII2, Golang, Linux
Можно как костыль, в actionIndex обрабатывать и запускать экшины. Код не точный, просто чтобы показать принцип.
public function actionIndex($handler) 
{
	$this->runAction($handler, Yii::$app->request->getQueryParams());
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Странный синтаксис. В config/main указываете? Вроде без паттернов идет, в духе
'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                'Путь который должен быть показан - /' => 'куда обращается site/index',
                '<module>/<controller>/<action>' => '<module>/<controller>/<handler:action>',
            ],
        ],

Не знаю как вы оформили хендлер и чем он является по своей сути, но у меня с компонентом так срабатывало.
Ответ написан
Комментировать
alex_kovalevv
@alex_kovalevv Автор вопроса
Понимаете ?handler=action приходит после редиректа со стороннего сервера. Поэтому получается url вида
site.ru/module/controller/?handler=action, я не могу в таком формате module/controller/action формировать url, мне нужно взять значение из handler и вставить его в путь.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы