//1,使用updateCounters()来更新计数器字段。 Book::model()->updateCounters(array('download_count'=>1),':id=id',array(':id'=>$id)); //2,使用sendFile()来下载文件。 $type = LFilter::checkString($_GET['t']); $dataProvider = Book::model()->findByPk($id); $content = $this->renderPartial('book',array( 'dataProvider' => $dataProvider, 'type' => $type, ),true,false); Yii::app()->request->sendFile($dataProvider->name.'.'.$type,$content); //3,设计数据库时候如果create_time,update_time字段为int(10).在模型中使用行为插件。 public function behaviors() { return array( 'CTimestampBehavior' => array( 'class' => 'zii.behaviors.CTimestampBehavior', 'createAttribute' => 'create_time', 'updateAttribute' => 'update_time', ) ); } //4,如果有些字段使用1,2,3之类的数字存储,在程序中使用时候含义不明确。可以model中加入如下函数. private static $_items = array(); public static function loadItems($type,$code=null) { self::$_items = array( 'status' => array( '1' => Yii::t('dh','开启'), '2' => Yii::t('dh','关闭'), ), 'type' => array( '1' => Yii::t('dh','产品'), '2' => Yii::t('dh','文章'), ), ); return $code ? self::$_items[$type][$code] : self::$_items[$type]; } //5,多语言使用Yii::t()函数。 public function attributeLabels() { return array( 'verifyCode'=>Yii::t('default','验证码'), 'name'=>Yii::t('default','名字'), 'email'=>Yii::t('default','邮箱'), 'subject'=>Yii::t('default','标题'), 'body'=>Yii::t('default','内容'), 'required'=>Yii::t('default','变量"{var}"没有定义',array('{var}'=>$var)); ); } //6,数据库表使用了前缀,则使用{{$tableName}}。 public function tableName() { return '{{product}}'; //7,Cookie的使用 //设置Cookie $cookie=new CHttpCookie($name,$value); $cookie=time()+60*60*24; Yii::app()->request->cookies[$name]=$cookie; //获取Cookie $cookie=Yii::app()->request->cookies[$name]; $value=$cookie->value; //删除Cookie $cookie = Yii::app()->request->getCookies(); unset($cookie[$name]); } //8,zii.widgets.jui.CJuiTabs的使用 <?php $this->widget('zii.widgets.jui.CJuiTabs', array( 'tabs'=>array( Yii::t('book','基本信息') => $this->renderPartial('_basic',array( 'model' => $model, 'form' => $form, ),true), Yii::t('book','作品标签') => array('ajax'=> $this->createUrl('tag/boxList',array('tag'=>$model->tag))), Yii::t('book','作品封面') => $this->renderPartial('_image',array( 'model'=>$model, 'form'=>$form, ),true), Yii::t('book','作品公告') => $this->renderPartial('_notice',array( 'model'=>$model, 'form'=>$form, ),true), ), // additional javascript options for the tabs plugin 'options'=>array( 'collapsible'=>false, ), )); ?> //对于tabs而言,对于复杂内容的渲染结合使用renderPartial(); //9,zii.widgets.grid.CGridView的使用 <?php $this->widget('zii.widgets.grid.CGridView', array( 'id'=>'chapter-grid', 'dataProvider'=>$model->search(), 'filter'=>$model, 'columns'=>array( 'id', //锚点<a href="http://blog.163.com/huv520@126/blog/"></a> array( 'name'=>'name', 'type'=>'raw', 'value'=>'CHtml::link($data->name,"/book/$data->id")', ), //图片 array( 'name'=>'image', 'type'=>'image', 'value'=>'LImages::getPath("book").$data->image',//图片相对路径 ), //下拉列表 array( 'name'=>'type', 'value'=>'Lookup::item("chapterType",$data->type)', 'filter'=>Lookup::items('chapterType'), ), //内容截取 array( 'name'=>'content', 'type'=>'html', 'value'=>'mb_substr(htmlspecialchars_decode($data->content),0,100,"utf-8")', ), //时间 array( 'name'=>'create_time', 'type'=>'datetime', ), // 根据相关信息读数据库 array( 'name'=>'user_id', 'value'=>'User::model()->findbyPk($data->user_id)->username', 'filter'=>false, ), array( 'class'=>'CButtonColumn', ), ), )); ?> //10,findAll()的使用; $params=array( 'select'=>'id,name,image', 'order'=>'total_point DESC', 'limit'=>5, ); $this->findAll($params); find()使用同理,只是返回一条数据。 //11,readAll()返回数组结果集 $query = 'SELECT id,username FROM user'; $command = Yii::app()->db->createCommand($query); return $command->query()->readAll();