在Yii中,当您在窗口小部件或控制器中使用渲染时,您只需要将文件名(不带.php)作为参数,如下所示:
$this->render('forum', array('data'=>$data));
例如当我在Class中使用此函数扩展CWidget时,Yii将尝试在/ protected / components / views中找到forum.php
如何将此默认路径更改为其他位置?对于我的所有widget类(所有类扩展CWidget)?如果我只想改变一些小部件的路径怎么办?
答案 0 :(得分:1)
您需要覆盖 CWidget 类的 getViewPath 方法
例如: -
class CMyWidget extends CWidget{
// Returns the directory containing the view files for this widget.
public function getViewPath($checkTheme=false){
// this method does the task of finding the view files containing directory.
// so override it
}
// This method will look for the view under the widget's getViewPath viewPath.
public function getViewFile($viewName)
{
// override it
}
}
最后在创建小部件时,您必须扩展 CMyWidget 类而不是 CWidget
答案 1 :(得分:1)
您只需执行$this->render('//path/forum', array('data'=>$data));
,其中//
指向主视图目录,通常为protected/views
。
您还可以使用带点符号的别名路径:
$this->render('application.myviews.test'); // would render protected/myviews/test.php
$this->render('webroot.test'); // would render htdocs/test.php