我的yii CGridview中有三行,并且有两种类型的用户登录。我必须隐藏三行中的一行,具体取决于用户的类型。请帮助。
答案 0 :(得分:1)
使用如下的条件语句:
public function newsearch()
{
$id= Yii::app()->user->id;
if($id = Your conditon){
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
Your Criteria to display
} else {
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
Your Criteria to display
}
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
在GridView数据提供程序中调用此数据提供程序。
答案 1 :(得分:1)
添加公共静态方法 例如:
class Post extends CActiveRecord {
public function tableName() {
return 'posts';
}
public function rules() {
return array();
}
public function attributeLabels() {
return array();
}
...
public static function rulesUser() {
if ( Yii::app()->user->id = 1 ) {
return True;
} else {
return False;
}
}
在gridview中添加行:
$this->widget('zii.widgets.grid.CGridView',
array(
'id' => 'posts-grid',
'dataProvider' => $model->search(),
'filter' => $model,
'emptyText' => '',
'columns' => array(
'id',
'title',
'post',
'date_create',
array(
'name' => 'status',
'visible' => Posts::rulesUser(),
)
array(
'class' => 'CButtonColumn',
),
),
)
);
答案 2 :(得分:0)
或添加模型
public $visible = True;
在你的搜索中添加if或switch
public function search()
{
$criteria = new CDbCriteria;
...
if (any if){
$this->visible = 1;
}
return new CActiveDataProvider($this, array(
'criteria' => $criteria,
));
}
你的gridview中的
...
array(
'name' => 'value',
'visible'=>$model->visible,
)
...
答案 3 :(得分:0)
我通过调整CDbCriteria
按如下方式解决了这个问题,
if(!Yii::app()->session["admin"])
{
$criteria->condition='t.unique_id!="i-8874c6e3"';
}
谢谢大家。