控制器代码:
public function actionIndex() { $model=new Staff('search'); if(isset($_GET['Manager'])) $model->attributes=$_GET['Manager']; $this->render('index',array( 'model'=>$model, )); }将model传到CGridView,数据库有一条记录,但是却不显示。
CGridView代码部分如下:
<?php $this->widget('zii.widgets.grid.CGridView', array( 'ajaxUpdate' => false, 'id'=>'staff-grid', 'itemsCssClass' => 'data_list', 'dataProvider'=>$model->search(), 'template' => '{items}{pager}', 'pager' => array( 'class'=>'LLinkPager', ), 'pagerCssClass' => 'myPager', 'enableSorting' => false, 'emptyText'=>'暂无数据', 'columns'=>array( ... ), )); ?>对比默认生成的代码发现,在$model=new Staff('search');代码下有一行代码:$model->unsetAttributes(); 加上该代码后,发现数据可以显示。Why?
查看一下unsetAttributes() 方法
unsetAttributes() 方法(可用自 v1.1.3) public void unsetAttributes(array $names=NULL) $names array list of attributes to be set null. If this parameter is not given, all attributes as specified by attributeNames will have their values unset. 源码: framework/base/CModel.php#482 (隐藏) public function unsetAttributes($names=null) { if($names===null) $names=$this->attributeNames(); foreach($names as $name) $this->$name=null; }该方法目的是将属性设置为NULL。
测试:
public function actionIndex() { $model=new Staff('search'); var_dump($model->attributes); exit; $model->unsetAttributes(); if(isset($_GET['Manager'])) $model->attributes=$_GET['Manager']; $this->render('index',array( 'model'=>$model, )); }结果为:
array(6) { ["sector_id"]=> string(1) "0" ["password"]=> string(0) "" ["permission"]=> int(0) ["logintime"]=> int(0) ["id"]=> NULL ["username"]=> NULL }怎么sector_id值为0?原来,我在数据库中将sector_id的默认值设为0,是不是问题在这?于是,我将该字段默认值设置为2,刷新
结果为:
array(6) { ["sector_id"]=> string(1) "2" ["password"]=> string(0) "" ["permission"]=> int(0) ["logintime"]=> int(0) ["id"]=> NULL ["username"]=> NULL }原来如此。
因为数据库中的一条记录,它的sector_id的值为1,你以0查询,当然是找不到数据喽。
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/4570/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取