cr1gger
@cr1gger
Все дороги ведут в Рим — встретимся в Риме!

Почему urlManager не правильно работает с модулями?

Есть модуль: panel

Имеется вот такая ссылка:
Url::to(['panel/order', 'slug' => $service->code])

И такие правила:
'panel/order/<slug:\w+>/' => 'panel/order',
'panel/order/<slug:\w+>' => 'panel/order',


При переходе по ссылке в ручную вбивая адрес:
site.ru/panel/order/slug - все ОК работает.

А url::to вот что мне генерирует:
http://site.ru/panel/panel/order?slug=queue-qwe

Такой путь у OrderController:
namespace app\modules\panel\controllers;
В экшене все ок тоже:
public function actionIndex($slug)
    {
        $service_model = Services::find()->where(['code' => $slug])->one();
        return $this->render('index', compact('service_model'));
    }


В чем может быть проблема ? Почему он не генерирует нормально ссылку
Если написать вот так?
<?= Url::to(['/../panel/order', 'slug' => $service->code]) ?>

Он генерирует нормальую ссылку, без второго слова panel.
Но не ЧПУ, получается такая ссылка:
site.ru/panel/order?slug=queue-qwe
а должно быть
site.ru/panel/order/queue-qwe
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
Tim-A-2020
@Tim-A-2020
В регулярке не указан дефис
'panel/order/<slug:[\w-]+>/' => 'panel/order',
    'panel/order/<slug:[\w-]+>' => 'panel/order',

И к модулю обращатся так:
Url::to(['/panel/order', 'slug' => $service->code])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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