本文纯粹是笔记,记下来怕忘了
1、终止当前操作,一般情况下是用exit,但用了Exit后无法看到trace的内容。所以要采用Yii::app()->end();
2、createUrl和createAbsoluteUrl,这两个函数,如果需要宣传自己的网址和内容,还是用createAbsoluteUrl函数吧。里面带了全部路径,而CreateUrl只会显示/home/xxx这样的路径,不利于SEO
3、widget默认的render无法使用theme中的模版,于是写一个类继承自CWidget,然后所有的widget都继承这个类,比如我这样实现了。。
PHP代码
- class Widget extends CWidget{
- private static $_viewPaths;
- /**
- * 重写CWidget中的getViewPath
- */
- public function getViewPath($checkTheme=false)
- {
- $className=get_class($this);
- if(isset(self::$_viewPaths[$className]))
- return self::$_viewPaths[$className];
- else
- {
- if($checkTheme && ($theme=Yii::app()->getTheme())!==null){
- return self::$_viewPaths[$className] = $theme->getBasePath().DIRECTORY_SEPARATOR."widgets"; //这是我自己的路径
- }
- $class=new ReflectionClass($className);
- return self::$_viewPaths[$className]=dirname($class->getFileName()).DIRECTORY_SEPARATOR.'views';
- }
- }
- }
覆写父类方法,使得getViewPath找到我指定的目录,我目录在themes/classic/下建了一个widgets的目录。这样的好处很多。。而且对于CSS和JS等路径都可以和标准视图一致
先写这么多。。。