yii视图中使用的widget方式总结:
经常使用的有3种方式:
1、显示详细信息:javascript
- $this->widget('zii.widgets.CDetailView', array(
- 'data' => $model,
- 'attributes' => array(
- 'id',
- 'title',
- 'content',
- ),
- );
2、显示列表,能够进行条件限制和分页:
控制器:html
- $dataProvider = new CActiveDataProvider('Post', array(
- 'criteria' => array(
- 'condition' => 'project_id = :project_id',
- 'params' => array(':project_id' => $pid),
- ),
- 'pagination' => array(
- 'pageSize' => '5',
- ),
- ));
视图:java
- $this->widget('zii.widgets.CListView',array(
- 'dataProvider' => $dataProvider,
- 'itemView' => '_view',
- ),
- );
子视图:express
getAttributeLabel('id')); ?>://$data接收来自父视图的数据,使用getAttributeLabel()获取模型中设置的标签
id), array('view', 'id'=>$data->id)); ?>//使用$data->attribute获取值。
3、显示列表,可是结果会在表格中显示app
- $this->widget('zii.widgets.grid.CGridView', array(
- 'dataProvider'=>$dataProvider,
- 'columns'=>array(
- 'title',
- 'category.name',
- 'content:html',
- array(
- 'name'=>'create_time',
- 'value'=>'date("M j, Y", $data->create_time)',
- ),
- array(
- 'name'=>'authorName',
- 'value'=>'$data->author->username',
- ),
- array(
- 'class'=>'CButtonColumn',
- ),
- ),
- 'filter'=>$model,
- ));
Yii中loadModel的使用:$this->loadModel($modelId);
通常在R/U/D操做中,会loadModel($modelId),这是由于此时,读,更新和删除时,已经经过GET方式获取到了model的id值,只须要将对应id的model加载进来,就能够了。
可是在C(创建),不须要loadModel,而是须要新建一个初始化的model。
使用$_POST['Model']的值分别填充model的attribute后,就能够save()了。
Yii中不一样控制器使用同一个模板:
在Yii的CRUD操做中,C和U使用的是同一个子视图。区别在于:
C操做中,全部的input的值都是空,新建的model也是初始化状态,并准备接收来自POST的值。
在U操做中,全部input的值须要经过loadModel($id)的方式填充,而后准备接收来自POST的更新的值(有的
值并无被用户修改);
而后,根据$model->isNewRecord()来判断提交按钮显示C仍是U操做。
最后使用$model->save();将记录存储。
Yii中渲染视图的方式:
使用$this->render()和$this->renderPartial()渲染视图;
前者通常渲染一个总体视图,在总体视图中可能会用后者渲染须要重复渲染的部分。
例如在indexAction中通常会显示记录列表,因为全部记录的渲染方式一致,此时会使用子
视图来分别渲染相同的部分。而index视图只是渲染一个大的结果,好比导航面包碎屑,记录的条数和
分页等。yii
From:http://zhouyujiao163.blog.163.com/blog/static/48363054201161464156603/ide