Задать вопрос

Yii2 GridView и PJAX. Как настроить?

Привет!
Есть gridView, выводится инфа, есть кнопки редактировать, удалить. Надо, чтобы удаление проходило через ajax. В блогах писали про использование pjax. Пробовал его использовать - никакого ajax и в помине нет. Cейчас же при нажатии на кнопку удалить СРАЗУ следует переход по ссылке. Что делать?
Выкладываю полностью текст вьюхи.

<h1>Выпуски</h1>
<?php
use yii\grid\GridView;
use yii\data\ActiveDataProvider;
use yii\grid\ActionColumn;
use yii\helpers\Html;

$dataProvider = new ActiveDataProvider([
    'query' => $model,
    'pagination' => [
        'pageSize' => 20,
    ],
]);

echo newerton\fancybox\FancyBox::widget([
    'target' => 'a[class=fancyboxWindow]',
    'config' => [
        'maxWidth' => '90%',
        'maxHeight' => '90%',
        'playSpeed' => 7000,
        'padding' => 0,
        'fitToView' => false,
        'width' => '70%',
        'height' => '70%',
        'autoSize' => false,
        'closeClick' => false,
        'openEffect' => 'elastic',
        'closeEffect' => 'elastic',
        'prevEffect' => 'elastic',
        'nextEffect' => 'elastic',
        'closeBtn' => false,
        'openOpacity' => true,
    ]
]);

\yii\widgets\Pjax::begin([
    'timeout' => 10000, // пробовал поиграться с параметрами, результата никакого
    'enablePushState'=>false
]);
echo GridView::widget([
    'dataProvider' => $dataProvider,
    'columns'=>[
        'id',
        'name',
        [
            'class' => 'yii\grid\DataColumn', // can be omitted, default
            'header'=>'Тип',
            'value' => function ($data) {
                    return $data->editionType->name;
                },
        ],
        [
            'format' => 'html',
            'value' => function($data) {
                    $name='/uploads/'.$data->img;
                    return Html::a(Html::img($name, ['width'=>'100px']), $name, ['class' => 'fancyboxWindow']);
                }
        ],
        'create',
        'update',
        [
            'class' => 'yii\grid\DataColumn', // can be omitted, default
            'header'=>'Автор',
            'value' => function ($data) {
                    return $data->user->name;
                },
        ],
        'year',
        'format',
        [
            'class' => ActionColumn::className(),
            'template' => '{update} {delete}',
            'buttons' => [
                'update' => function ($url, $model) {
                        return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url, [
                            'title' => 'Редактировать',
                        ]);
                    },
                'delete' => function ($url, $model) {
                        return Html::a('<span class="glyphicon glyphicon-trash"></span>', $url, [
                            'title' =>'Удалить',
//                            'data-confirm'=>"Хотите удалить?",
                            'data-pjax'=>'1'
                        ]);
                    },
            ],

            'urlCreator' => function ($action, $model, $key, $index) {
                    if ($action === 'update') {
                        $url ='/panel/adverts/edition/update/'.$model->id;
                        return $url;
                    }
                    if ($action === 'delete') {
                        $url ='/panel/adverts/edition/delete/'.$model->id;
                        return $url;
                    }
                }
        ]
    ],
]);
\yii\widgets\Pjax::end();
?>
<a href="/panel/adverts/edition/create" class="btn btn-success">Создать</a>
  • Вопрос задан
  • 6800 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Zohei
добавьте вашим ссылкам атрибут data-pjax, а колонкам измените format на raw
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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