【问题标题】:show only params in url: Yii url rewriting仅显示 url 中的参数:Yii url 重写
【发布时间】:2014-06-18 21:03:06
【问题描述】:

我一直在尝试使用以下规则来删除所有三个“模块名称”、“控制器”、“操作”并在 yii 中只显示参数:

'/<country:\w+>/<trip:\w+>/<poi:\w+>' => 'module/detail/index/'

它工作正常。但是,只要调用来自其他模块的 url,例如“其他模块/控制器/操作”,就会激活规则。无论如何要在一个模块内或只为一个模块实现规则?

在此先感谢

【问题讨论】:

  • 也许你需要在before这条规则之前写另一条规则,这样其他url首先匹配另一条规则,而不会被这条规则匹配。你在 Yii 中声明规则的顺序很重要;如果多个规则匹配一个 URL,将使用找到的第一个。

标签: yii url-rewriting yii-url-manager


【解决方案1】:

您的 url 规则过于宽泛,可能适用于很多 url 路径。

对我来说,解决问题的最佳方法是创建一个自定义 url rule class,检查 &lt;country:\w+&gt; 是否匹配国家名称(如果您有所有国家/地区的表格)。

查看yii guide,他们对汽车品牌也是如此

【讨论】:

  • 会试一试,如果可行就接受答案。
  • 如果您需要帮助,请随时寻求帮助。我已经在网站上做过了。
  • 我还有一个问题,希望你不会介意。如何在 url 中只显示参数名称而不显示值?有可能吗?
  • 你能举例说明你想要什么吗?
  • 我将拥有 country/someTitle/someTitle/ 并希望拥有相应的 title 值以便我可以处理它。 IE。 title=myTitle 但只想显示 title 并且需要获取 title 的值,即 myTitle。意味着只在 url 中显示名称,但希望在行动中获得价值。
【解决方案2】:

我认为在这种情况下您需要在 URL 中使用一些静态字符串来区分它。动态 URL 会导致问题,它不允许您调用保持相同结构的特定模块。

您可以为任何自定义静态字符串添加前缀或后缀。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    相关资源
    最近更新 更多