yii2中的操作列

cygmwpex  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(178)

默认情况下,ActionColumnviewupdatedelete
我想添加一个按钮“made”* 来将任务标记为完成 *,(我在db call 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'),
      ]);                                
    }
  ],
hujrc8aj

hujrc8aj1#

您可以这样做:

[
  '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上执行必要的操作。希望这会有所帮助。

相关问题