我的 yii CGridview 中有三行,并且有两种类型的用户登录名。我必须根据用户的类型隐藏三行之一。请帮忙。
问问题
3658 次
4 回答
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 数据提供程序中调用此数据提供程序。
于 2013-04-02T05:01:34.533 回答
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',
),
),
)
);
于 2013-04-02T05:31:11.883 回答
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,
));
}
在您的网格视图中
...
array(
'name' => 'value',
'visible'=>$model->visible,
)
...
于 2013-04-02T05:38:18.737 回答
0
我已经通过调节 CDbCriteria
如下解决了这个任务,
if(!Yii::app()->session["admin"])
{
$criteria->condition='t.unique_id!="i-8874c6e3"';
}
谢谢大家。
于 2013-04-02T05:52:17.700 回答