- 論壇徽章:
- 0
|
yii視圖中使用的widget方式總結(jié): 常用的有3種方式: 一、顯示詳細信息: <?php $this->widget('zii.widgets.CDetailView', array( 'data' => $model, 'attributes' => array( 'id', 'title', 'content', ), ); ?>
二、顯示列表,可以進行條件限制和分頁: 控制器: $dataProvider = new CActiveDataProvider('Post', array( 'criteria' => array( 'condition' => 'project_id = :project_id', 'params' => array(':project_id' => $pid), ), 'pagination' => array( 'pageSize' => '5', ), )); 視圖: <?php $this->widget('zii.widgets.CListView',array( 'dataProvider' => $dataProvider, //數(shù)據(jù)源 'itemView' => '_view', //渲染子視圖,傳給模板的值用$data接收。 ), ); ?> 子視圖: <div class="view"> <b><?php echo CHtml::encode($data->getAttributeLabel('id')); ?>:</b>//$data接收來自父視圖的數(shù)據(jù),使用getAttributeLabel()獲取模型中設置的標簽 <?php echo CHtml::link(CHtml::encode($data->id), array('view', 'id'=>$data->id)); ?>//使用$data->attribute獲取值。 <br /> </div>
三、顯示列表,但是結(jié)果會在表格中顯示 $this->widget('zii.widgets.grid.CGridView', array( 'dataProvider'=>$dataProvider, //數(shù)據(jù)源 'columns'=>array( 'title', // display the 'title' attribute 'category.name', // display the 'name' attribute of the 'category' relation //顯示與category相關的name 'content:html', // display the 'content' attribute as purified HTML 顯示凈化過的HTML格式 array( // display 'create_time' using an expression 'name'=>'create_time', 'value'=>'date("M j, Y", $data->create_time)', ), array( // display 'author.username' using an expression 'name'=>'authorName', 'value'=>'$data->author->username', ), array( // display a column with "view", "update" and "delete" buttons 'class'=>'CButtonColumn', ), ), 'filter'=>$model,//對用戶的輸入進行過濾 ));
Yii中l(wèi)oadModel的使用:$this->loadModel($modelId); 一般在R/U/D操作中,會loadModel($modelId),這是因為此時,讀,更新和刪除時,已經(jīng)通過GET方式獲取到了model的id值,只需要將對應id的model加載進來,就可以了。 但是在C(建立),不需要loadModel,而是需要新建一個初始化的model。 使用$_POST['Model']的值分別填充model的attribute后,就可以save()了。
Yii中不同控制器使用同一個模板: 在Yii的CRUD操作中,C和U使用的是同一個子視圖。區(qū)別在于: C操作中,所有的input的值都是空,新建的model也是初始化狀態(tài),并準備接收來自POST的值。 在U操作中,所有input的值需要通過loadModel($id)的方式填充,然后準備接收來自POST的更新的值(有的 值并沒有被用戶修改); 然后,根據(jù)$model->isNewRecord()來判斷提交按鈕顯示C還是U操作。 最后使用$model->save();將記錄存儲。
Yii中渲染視圖的方式: 使用$this->render()和$this->renderPartial()渲染視圖; 前者一般渲染一個整體視圖,在整體視圖中可能會用后者渲染需要重復渲染的部分。 例如在indexAction中一般會顯示記錄列表,由于所有記錄的渲染方式一致,此時會使用子 視圖來分別渲染相同的部分。而index視圖只是渲染一個大的結(jié)果,比如導航面包碎屑,記錄的條數(shù)和 分頁等。
|
|