@Oversec

Как настроить работу Ajax и GridView?

Вот который день ломаю голову, как мне сделать, чтобы человек мог менять данные в таблице (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');
    }


Таблица при клике обновляется, но данные не меняются + если это делать в середине таблицы - то перебрасывает вверх.
  • Вопрос задан
  • 184 просмотра
Пригласить эксперта
Ответы на вопрос 1
slo_nik
@slo_nik Куратор тега Yii
Пробовал через Pjax - не вышло. Возможно ли через Ajax?


Pjax — это jquery плагин, который использует pushState и ajax и предоставляет возможность грузить страницу не полностью при переходе по ссылкам, а частично, но с соответствующим заголовком страницы и возможностью возврата назад


Получается, что Вы уже используете ajax.

В контроллере, в действии зачем Вы редирект поставили? Откуда Вы берёте id? Вы уверены, что он есть? Проверьте.
Как Вы отправляете данные на сервер? Вы хотите повесить клик на ячейку таблицы?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы