1

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

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

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

您知道实现此目标的更优雅的解决方案吗?

4

1 回答 1

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

然后,您可以在应用程序的任何地方使用它,只要您在过程中足够早的时间运行它。

于 2012-10-16T07:36:23.647 回答