yii2 中的 ActionColumn

ActionColumn in yii2

ActionColumn默认有viewupdatedelete

我想添加一个按钮 "made" 将任务标记为完成,( 我在数据库调用中有一列 status 得到一个 int 0 或 1 ), 所以我想要一个函数来实现将任务标记为已完成的逻辑,有人可以帮助我吗?

这个例子我在论坛上搞到的,但是不是很懂

[
  'class' => 'yii\grid\ActionColumn',
  'template' => '{view} {update} {delete} {made}',
  'buttons'=> [
    'made' => function () {     
      return Html::button('<span class="glyphicon glyphicon-ok"></span>', [
        'title' => Yii::t('yii', 'made'),
      ]);                                
    }
  ],

你可以这样做:

[
  'class' => 'yii\grid\ActionColumn',
  'template' => '{view} {update} {delete} {made}',
  'buttons'=> [
    ...
    'made' => function ($url, $model) {
       if($model->status === $model::STATUS_SUSPENDED){
          return Html::a("Activate", $url, [
              'title' => "Activate",
              'class' => 'btn btn-xs btn-success',
              'data' => [
                   'method' => 'post',
                   'confirm' => 'Are you sure? This will Activate this.',
              ],
          ]);
       }
       return Html::a("Suspend", $url, [
          'title' => "Suspend",
          'class' => 'btn btn-xs btn-danger',
          'data' => [
              'method' => 'post',
              'confirm' => 'Are you sure? This will Suspend this.',
          ],
       ]);
     }
  ],
]

然后在您的控制器 actionMade() 中创建方法,您可以在其中检查 post 请求,并对指定的 id 执行必要的操作。希望这会有所帮助。