Необходимо по нажатию на галочку напротив строки присваивать ей статус ready (поле в бд) и скрывать по тому же фильтру (ready).
Есть sql команда, есть табличка, нужно поменять значение в БД по имени поля, нажимая на кнопку напротив соответствующих значений.
Команда для изменения:
Yii::$app->db->createCommand('UPDATE transactions SET ready=1 WHERE id = ' .$flag)->execute();
Табличка с кнопкой:
echo GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
'id',
'value',
'ready',
[
'header' => 'Подтвердить',
'template' => '{update}',
'buttons' => [
'update' => function ($flag???) {
return ???
}
Каким образом передать функции нужное значение (id строчки) и как собственно заставить ее записать параметр в табличку по нажатию кнопки?
Либо это надо решать вообще по другому и использовать стандартную кнопку или ссылку и передать ей параметр?
Один из вариантов: воспользоваться jQuery
'update' => function ($url, $model, $key) {
return \yii\helpers\Html::a('Update', null,
['class' => 'send', 'data-id' => $model->id]);
},
Пример кода javascript
$this->registerJs("
$('.send').on('click', function(e){
e.preventDefault();
var id = $(self).data('id');
$.ajax({
url: '/<your-action>',
data: {
id: id,
}
}).done(function(data) {
// your code
});
});
");
И не забудьте создать в контроллере action указанный в коде, куда поместите
Yii::$app->db->createCommand('UPDATE transactions SET ready=1 WHERE id = ' .$flag)->execute();
Продвижение своими сайтами как стратегия роста и независимости