createUrl 如何自动带模块名

createUrl(‘post/index’) 生成的 url 为 www.abc.com/index.php?r=post/index

如果在 backend 模块下的话,我需要这样书写 createUrl(‘backend/post/index’) 这样得到的是 www.abc.com/index.php?r=backend/post/index 这样的路径。

那么有没有办法可以让 createUrl(‘post/index’) 这个在前台的话生成的是 www.abc.com/index.php?r=post/index,同样的代码到了 backend 模块则得到 www.abc.com/index.php?r=backend/post/index 呢?

createUrl(’/backend/post’)

这样试试~

这样也不行。

你用的是 Yii::app()->createUrl() ? —— 使用这个方法,必须写完整的route才行

你在控制器使用 $this->createUrl(); 就可以实现你想要的~

是的。我使用的是 Yii::app()->createUrl(),这也有办法实现和 $this->createUrl() 一样的功能吗?

你去看看 CController::createUrl() 源码就知道了~

你其实在控制器外部可以调用 Yii::app()->controller->createUrl()

我是在模型中定的一个函数,Yii::app()->controller->createUrl() 测试了一下,也不能达到我想的要求。因为返回的是一个 link,目前还是通过 CHtml::link 来达到要求了。

多谢 Jerry,Tks!!!