Действие (sql update) по кнопке в GridView

202
29 июля 2017, 06:34

Необходимо по нажатию на галочку напротив строки присваивать ей статус 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 строчки) и как собственно заставить ее записать параметр в табличку по нажатию кнопки?

Либо это надо решать вообще по другому и использовать стандартную кнопку или ссылку и передать ей параметр?

Answer 1

Один из вариантов: воспользоваться 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();
READ ALSO
Как сделать фильтр товаров для интернет магазина на laravel?

Как сделать фильтр товаров для интернет магазина на laravel?

Подскажите, как сделать правильный фильтр товаров? Сейчас делаю так:

741
регулярные выражения php

регулярные выражения php

Имеется регулярное выражение:

268
Два задания с указателями на C++

Два задания с указателями на C++

Посмотрите пожалуйста правильно ли я делаю?

307