【问题标题】:Yii2 - how to deal with similar routesYii2 - 如何处理相似的路线
【发布时间】:2016-08-26 22:00:08
【问题描述】:

我有以下路线:

'http://' . $domain . '/community-board/<topicName:\w+(-\w+)>/<id:\d+>' => 'board-posts/index',
'http://' . $domain . '/community-board/<topicName:\w+(-\w+)>/<postName:\w+(-\w+)><id:\d+>' => 'board-posts/view',

第一个路由总是被触发,我无法访问第二个路由。 yii 有办法解决这个问题吗?

【问题讨论】:

  • 请给我 URL 示例,由第一条规则解决。你如何定义已经解决的某些规则?

标签: yii yii2


【解决方案1】:

首先,您可以删除http://' . $domain . '/,除非您希望此规则仅对特定域有效。

我在第二条规则中看到了可能的错误。路由community-board/topic-main/post-SO-question39163975会被解析如下:

['topicName' =&gt; 'main', 'postName' =&gt; 'SO-question3916397', 'id' =&gt; 5]

我建议修改第二条规则中的正则表达式如下: community-board/&lt;topicName:\w+(-\w+)&gt;/&lt;postName:\w+(-\w+?)&gt;&lt;id:\d+&gt;(将 ? 添加到 postName 属性以使 RegExp 变得懒惰)。改动后:

['topicName' =&gt; 'main', 'postName' =&gt; 'SO-question', 'id' =&gt; 39163975]

我有检查规则,看不到任何其他问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    相关资源
    最近更新 更多