如何更新发送id的单个字段

时间:2017-01-19 07:53:27

标签: yii yii2 yii2-advanced-app

我想使用记录 id 设置status = 1。但这不起作用。

我从索引页面发送id(波纹管图片)。

enter image description here

public function actionConfirm($id) {
        $model = $this->findModel($id);

        $model->status = 1;
        if ($model->save()) {
            return $this->render('index');
        } else {
            die('not work'); //this clause works 
        }
    }

我该怎么办呢。

2 个答案:

答案 0 :(得分:1)

您的验证存在一些问题。

原因可以是两个

  1. $model = $this->findModel($id)无法通过ID
  2. 找到您要查找的记录
  3. 不知何故,您保存的数据库记录不完整,无法保存在数据库中。
  4. 解决方案:

    首先,由于您正在进行更新,我建议您使用$model->update() method

    但是在这两种情况下(update()或save())如果你想强制更新字段,你应该将false传递给$ runValidation参数

    public function actionConfirm($id) {
            $model = $this->findModel($id);
    
            $model->status = 1;
            if ($model->update(false)) {
                return $this->render('index'); // now this works
            } else {
                die('not work');
            }
        }
    

答案 1 :(得分:1)

假设您的按钮在操作列中命名为check 在您的操作列中,您可以调用

      ['class' => 'yii\grid\ActionColumn',
            'template' => '{delete}{update}{viwq}{check}',               
            'buttons' => [
                'check' => function ($url, $model) {
                    return Html::a('<span class="glyphicon glyphicon-check"></span>', $url, [
                    'title' => Yii::t('yii', 'Confirm'),
                    ]);
                }
             ],
            'urlCreator' => function ($action, $model, $key, $index) {
                if ($action === 'check') {
                    $url = Url::to(['/your-controller/confirm', 'id' =>$model->id]);
                return $url;
                }
            }
        ]            
    ],