我想知道yii组件是否也支持主题功能?在我的环境中,一个组件现在只考虑component/views/
文件夹中的文件
既然我也在使用主题,那么告诉组件在themes/themeName/
文件夹下查找视图会很好。
使用下面的方法我可以解决这个问题,但它肯定不会觉得这是做这件事的方式。
protected function renderContent()
{
$view = './../../../themes/'.Yii::app()->theme->name.'/views/viewName';
$this->render($view);
}
您知道更优雅的解决方案吗?
答案 0 :(得分:3)
组件上没有任何主题。主要是因为它们不打算为任何内容呈现内容。这没有什么不对,有时它是必需的。
最简单的解决方案可能是让它更具可读性,使用路径别名总是有帮助:
protected function renderContent()
{
$view = 'webroot.themes.'.Yii::app()->theme->name.'.views.viewName';
$this->render($view);
}
或者您可以添加组件的方法,或者扩展CComponent以在所有组件中获取它:
public function getViewsPath(){
return 'webroot.themes.'.Yii::app()->theme->name.'.views';
}
或者您可以设置路径别名:
Yii::setPathOfAlias('theme','webroot.themes.'.Yii::app()->theme->name);
然后,您可以在应用程序的任何位置使用它,前提是您在此过程中尽早运行它。