
В CRUD Yii2 можно сделать поле с чекбоксом при нажатии на который будет меняться статус статьи или товара. Очень удобно когда часто приходится отключать/включать записи в базе данных
index.php в GridView добавляем столбец
[ 'class' => 'yii\grid\CheckboxColumn', 'header' => 'Вкл.', 'checkboxOptions' => function ($model, $key, $index, $column) { $options['onclick'] = 'btnStatusClick('.$model->id.');'; $options['checked'] = $model->status ? true : false; return $options; } ],
Ajax событие для чекбокса
//изменение статуса $script = <<< JS function btnStatusClick(id){ console.log(id) const csrfToken = $('meta[name="csrf-token"]').attr("content"); $.ajax({ type: 'GET', url: '/users/default/status', data: { // _csrf : csrfToken, id: id }, success: function(result){ console.log(result); } }); }//btnStatusClick JS; $this->registerJs($script,\yii\web\View::POS_END);
В контроллер
public function actionStatus($id) { $tag = Tags::findOne($id); $tag->status == 1 ? $tag->status = 0 : $tag->status = 1; $tag->save(); }
Источник:
Перейти