Yii2 url规则使用slug用于多个控制器,例如domain.com/slug



我想为一些东西设置url规则,比如:www.domain.com/slug,用于多个控制器的url。我有一个模型"内容",在"内容"模型中有一个名为内容类型的列。例如,content_type=1表示竞赛,content_type=2表示发布,content_type=3表示产品等。我已经为content_type、contestController、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个控制器

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

    • 在前端部分,用户将不知道实际使用的是哪一个控制器,但您可以在通过slug找到模型后检测类型
  2. 通过控制器拆分路由器

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

    • 您应该知道,在放置指向该页面的链接时,使用了哪种类型
  3. 按类型划分路由器标志(未测试(

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

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

除此之外,我不知道它是如何工作的。

最新更新