【发布时间】:2014-04-22 00:51:08
【问题描述】:
我是 Web 开发的新手,我花了几个小时试图了解 Yii 以及它如何处理 URL。教程看了几十遍还是没看懂。
我正在尝试为按钮小部件、菜单小部件、控制器操作和基本 HTML 链接设置 URL。看来 Yii 处理所有这些路由的方式不同,我无法让它工作。
这是一个例子。 我需要从protected/views/site 文件夹中的一个页面到protected/modules 中的一个模块。 所有 以下命令给我CException 错误SiteController cannot find the requested view [...] .../yii/framework/web/CController.php(878) 文件时发出以下命令...
$this->render(Yii::app()->createURL('module/action'));
$this->render(Yii::app()->createURL('/module/action'));
$this->render(Yii::app()->createAbsoluteURL('module/action'));
$this->render(Yii::app()->createAbsoluteURL('/module/action'));
$this->render('module');
$this->render('/module');
$this->render('//module')
$this->render('module/action');
$this->render('/module/action');
我以为我收到了这个错误,因为createURL() 给了我/app/index.php/module/action。相反,我想要http://mysite/app/index.php/module/action。感谢@Jonnny,我能够使用createAbsoluteURL() 获得完整的URL。
问题是我仍然遇到同样的错误。如果我输入http://mysite/app/index.php/module/action,我会得到我想要的模块,但是如果我尝试通过 Yii 渲染页面,我会得到 CException 错误。
令人沮丧的是,我可以在 Yii 的其他区域轻松地在控制器之间移动。例如,如果我将参数设置为 YiiBooster 小部件,例如 ...
array('label' => 'Menu Option',
'url' => array('/controller/action')
...无论我从哪个控制器开始,我都会被路由到http://mysite/app/index.php/controller/action。控制器/动作的 URL 模式与模块/动作的 URL 模式相同,为什么 Yii 不能带我进入模块/动作?
更新:
在我更好地理解 Yii 之前,我使用的是在 http://www.highnd.com/articles/yii-framework/yii-url-links-and-redirection 上找到的解决方案。我现在可以使用以下命令访问模块:
$this->redirect(Yii::app()->createAbsoluteURL('module'));
【问题讨论】:
标签: php yii yii-booster