修改放入CGridView的数据 - Yii

时间:2014-07-17 10:37:17

标签: php yii

我正在Yii的一个项目上工作,我希望用户能够更新他的手机"帐户"的信息。我使用的数据库为每个人拥有多个帐户(就此而言,有多个人将使用该系统)。现在,当用户进入"管理他的帐户时#34;他能够管理数据库帐户的所有(而不仅仅是他自己的帐户)。

目前,控制器中的代码如下所示

public function actionAdmin()
{
    $model =new Account('search');
    $userId = Login::model()->getUserId(); 
    $model->unsetAttributes();  // clear any default values
    if(isset($_GET['Account']))
    {
        $model->attributes=$_GET['Account'];
    }
    $this->render('admin',array(
        'model'=>$model,
    ));
}

UserId是我想要将数据限制为的ID。

的内容
$account = Account::model()->findAll(array("condition"=>"user_id = $userId")); 

我不确定如何完成这件事。我环顾四周,我知道有" Criteria"我可以在模型中更新,并且在视图中还有一个"过滤器功能"。我应该使用这两个中的一个来限制显示的帐户吗?或者我可以直接从控制器做一些事情吗?

以下是视图中的代码

<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'account-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
    'id',
    'user_id',
    'name',
    'mobile_comp',
    'msisdn',
    'pin',
    'balance',
    /*
    'company',
    */
    array(
        'class'=>'CButtonColumn',
    ),
),

)); ?&GT;

和模型

    public function search()
{
    // @todo Please modify the following code to remove attributes that should not be searched.

    $criteria=new CDbCriteria;

    $criteria->compare('name',$this->name,true);
    $criteria->compare('mobile_comp',$this->mobile_comp,true);
    $criteria->compare('msisdn',$this->msisdn);
    $criteria->compare('pin',$this->pin);
    $criteria->compare('company',$this->company,true);

    return new CActiveDataProvider($this, array(
        'criteria'=>$criteria,
    ));
} 

2 个答案:

答案 0 :(得分:0)

将您的actionAdmin更改为以下

public function actionAdmin()
{
   $model =new Account('search');
   $userId = Login::model()->getUserId(); 
   $model->unsetAttributes();  // clear any default values
   if(isset($_GET['Account']))
   {
      $model->attributes=$_GET['Account'];
   }
   $model->user_id = $userId;
   $this->render('admin',array(
      'model'=>$model,
   ));
 }

以上代码只会加载当前用户记录。

答案 1 :(得分:0)

刚解决 - 与Think Different不同的方式:

在我的模型中,我添加了条件

    public function search()
{
    // @todo Please modify the following code to remove attributes that should not be searched.

    $criteria=new CDbCriteria;

    $userId = Login::model()->getUserId(); 
    $criteria->addCondition(array("condtion"=>"user_id = $userId"));
    $criteria->compare('name',$this->name,true);
    $criteria->compare('mobile_comp',$this->mobile_comp,true);
    $criteria->compare('msisdn',$this->msisdn);
    $criteria->compare('pin',$this->pin);
    $criteria->compare('company',$this->company,true);

    return new CActiveDataProvider($this, array(
        'criteria'=>$criteria,
    ));
}