Вот который день ломаю голову, как мне сделать, чтобы человек мог менять данные в таблице (GridView) и таблица автоматический обновляется без перезагрузки страницы? Пробовал через Pjax - не вышло. Возможно ли через Ajax?
Пример кода на Pjax который вышел у меня
view/index.php
$this->registerJs(
'$( ".pjax" ).click(function(event) {
$.pjax.reload({container: "#tasks"});
});
<?php Pjax::begin(['id' => 'tasks']); ?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
[
'class' => 'yii\grid\CheckboxColumn',
],
[
'attribute' => 'doc',
'contentOptions' => ['style' => 'font-size: 1.3em !important'],
'format' => 'raw',
'filter' => [
0 => 'Нету',
1 => 'Есть',
],
'value' => function ($model, $key, $index, $column) {
$active = $model->{$column->attribute} === 1;
return Html::a(
$active ? 'Есть' : 'Нету',
['task/doc', 'id' => $model->id],
[
'class' => 'pjax label label-' . ($active ? 'success' : 'warning'),
]
);
},
],
?>
<?php Pjax::end(); ?>
conreollers/TaskController.php
public function actionDoc($id)
{
$model = Task::findOne($id);
$model->doc = !$model->doc;
$model->save(false);
$this->redirect('index');
}
Таблица при клике обновляется, но данные не меняются + если это делать в середине таблицы - то перебрасывает вверх.