【问题标题】:Can Yii correctly utilize urlManager rules with the createUrl function?Yii 能否通过 createUrl 函数正确使用 urlManager 规则?
【发布时间】:2012-07-14 22:17:39
【问题描述】:

我有一系列 urlManager 规则来简化我的 Web 应用程序。例如,Yii 附带的 vanilla 应用程序安装程序创建了“页面”模型,我将页面从 /site/page/view/about 重定向到 /about。 p>

这很好用,但我不确定 Yii 是否能够阅读我的规则来确定要创建的最佳 URL。目前,如果我使用以下代码,createUrl 将返回标准 URL (/site/page/view/about): createUrl('/site/page', array('view'=>'about'))

或者,使用createUrl('/about') 将正确链接到首选 URL,但这似乎不像第一个示例那样好。此外,在 CMenu 函数中使用此链接不会将此链接关联为当前的活动链接。

对于此要求是否有更好的做法可以遵循? createUrl 的替代用法似乎过于“硬编码”,并且如前所述,在逻辑上无法与系统配合使用(确定活动页面等)。

【问题讨论】:

  • 能否请您发布网址规则?并注意createUrl 的正确语法是createUrl('site/page', array('view'=>'about'))
  • @dlnGd0nG 有问题的规则是'<page:\w+>' => 'site/page/view/<page>'。抱歉,这是我的 createUrl 函数的错字,在我的脚本中它的用法是正确的,正如你所说的

标签: php url url-rewriting yii


【解决方案1】:

使用这种方式创建url:/site/page/view/about

Yii::app()->createUrl('site/page', array('view'=>'about'));

这里以更好的方式提及:Yii Url Mmanagement

【讨论】:

  • 这是标准方式,结果是原始的完整 URL (/site/page/view/about),不幸的是,不是规则版本
【解决方案2】:

您的规则'<page:\w+>' => 'site/page/view/<page>' 不正确。使用这个(假设您使用默认的 gii 生成的代码)作为第一条规则

'<view:\w+>'=>'site/page'

【讨论】:

  • 谢谢,这已修复,现在 creatUrl 等返回所需的 url。你有参考我可以阅读它是如何工作的吗?我看过的示例总是使用“字符串变量”(例如,必须在规则分配中使用 标签,它如何知道页面?或者这是假设使用此变量的名称?)。
  • 除此之外,该规则如何适用于二级页面(例如,/staff/john-smith,可在 site/pages/staff/ 中找到john-smith?我似乎无法让规则包含正斜杠(即使将其更改为 &lt;view&gt;&lt;view:.+&gt;
  • 参考yiiframework.com/doc/guide/1.1/en/topics.url。键(上面的view)是GET参数,值('site/page')是路由(表示控制器/动作)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-17
  • 2014-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-11
相关资源
最近更新 更多