Yii:组件的主题支持?

时间:2012-10-02 13:42:19

标签: php yii themes

我想知道yii组件是否也支持主题功能?在我的环境中,一个组件现在只考虑component/views/文件夹中的文件 既然我也在使用主题,那么告诉组件在themes/themeName/文件夹下查找视图会很好。

使用下面的方法我可以解决这个问题,但它肯定不会觉得这是做这件事的方式。

protected function renderContent()
{
    $view = './../../../themes/'.Yii::app()->theme->name.'/views/viewName';
    $this->render($view);
}  

您知道更优雅的解决方案吗?

1 个答案:

答案 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);

然后,您可以在应用程序的任何位置使用它,前提是您在此过程中尽早运行它。