Правила URL Yii2, использующие slug для нескольких контроллеров, например, domain.com/slug - PullRequest
0 голосов
/ 22 марта 2020

Я бы хотел установить правила для URL-адреса, например: www.domain.com/slug в URL для нескольких контроллеров. У меня есть одна модель «Контент», и в модели «Контент» есть столбец с именем тип контента. Например. content_type = 1 означает конкурс, content_type = 2 означает публикацию, content_type = 3 означает продукт et c. Я создал контроллер для каждого из content_type ,testController, postController, productController.

Интересно, есть ли способ сохранить URL-адреса в следующем формате для нескольких различных контроллеров:

'<slug:.*?>'=>'contest/view', // content type contest - contestController
'<slug:.*?>'=>'post/view', // content type post - postController
'<slug:.*?>'=>'product/view', // content type product - productController

это работает только с одним правилом выше согласно документации yii.

1 Ответ

1 голос
/ 22 марта 2020

Не прямой ответ, но рассматривали ли вы другой подход?

  1. Отправить все на 1 контроллер

    '<slug:.*?>'=>'post/view',

    • вкл Пользователь части внешнего интерфейса не будет знать, какой контроллер на самом деле используется, но вы можете определить тип после того, как найдете модель по слагу.
  2. Разделение маршрутизатора по контроллеру

    'post/<slug:.*?>'=>'post/view',

    • Вы должны знать, при размещении ссылки на эту страницу, какой тип используется
  3. Разделить маршрутизатор по типу флага (не проверено)

    '<slug:[\w][\-\w]*?>/post'=>'post/view',

    '<slug:[\w][\-\w]*?>/product'=>'product/view',

Кроме того, я не понимаю, как это может работать.

...