0

私の yii CGridview には 3 つの行があり、2 種類のユーザー ログインがあります。ユーザーの種類に応じて、3 つの行のうちの 1 つを非表示にする必要があります。助けてください。

4

4 に答える 4

1

モデルに public static メソッドを追加します。たとえば、次のようにします。

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;
    }  
}

行のグリッドビューに追加します:

$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 に答える
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 に答える