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