怎样能把Widget相关View文件的路径设置到使用的Theme目录中

我希望把所有的view文件都通过Theme管理起来,但是对于Widget部分的View好像没有办法配置到对应的Theme目录下。

看源码中,CWidget 的 getViewPath()方法中,好像已经定义死了,必须是跟Widget类同级的views目录下

代码如下:(版本 yii-1.1.2.r2086)


return self::$_viewPaths[$className] = dirname($class->getFileName()) . DIRECTORY_SEPARATOR . 'views'

现在的解决办法是修改了这块的源码:


if(($theme=Yii::app()->getTheme())!==null){

	return self::$_viewPaths[$className] = Yii::app() -> getTheme() -> getBasePath(). DIRECTORY_SEPARATOR . 'widget';

}

else{			

        return self::$_viewPaths[$className] = dirname($class->getFileName()) . DIRECTORY_SEPARATOR . 'views';

}



始终觉得改源码不是一个好的解决方案,请问各位还有什么好的解决办法吗??

你想使用自己的CWidget,然后这个CWidget还可以根据主题的变化而变化。

其实我不建议你这样做,通过官方提供的众多CWidget来看,CWidget的主要目的还是

构建一些复杂且通用的局部视图。如果非要根据主题而变化的话,

我建议你的CWidget做一些属性参数,当使用CWidget的使用传递这些参数来改变CWidget的风格或者功能等等。

当然了,这些参数是根据你的主题而定的。

比如有 datepicker这个 widget 这个里面有个配置参数是可以设置主题的。lz可以考虑用这种方式来做。