Ajax + GridView

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Ajax + GridView

Сообщение zelenin »

Сделал удаление записи в GridView через ajax таким образом: при нажатии на кнопку Delete, отправляется ajax-запрос на post/delete/<id>, обратно отдается grid, но в пагинации
ссылки уже не вида post/index?page=1, а вида post/delete?page=1. Отдебажив, нашел, что ссылка в пагинации генерируется в Pagination::createUrl в строке

Код: Выделить всё

$route = $this->route === null ? Yii::$app->controller->getRoute() : $this->route; 
getRoute получает роут последнего запроса post/delete
Немножко закостылив в контроллере, принудительно присвоил $this->action->id = 'index'; чтобы роут формировался так, как нужно мне.

Код: Выделить всё

    public function actionIndex()
    {
        $searchModel = new PostSearch;
        $dataProvider = $searchModel->search( $_GET );

        $params = [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider
        ];
        return Yii::$app->getRequest()->getIsAjax()
            ? $this->renderPartial( '_grid', $params )
            : $this->render( 'index', $params );
    }

       public function actionDelete( $id )
    {
        $this->findModel( $id )->delete();
        $this->action->id = 'index'; // костыль
        return Yii::$app->getRequest()->getIsAjax()
            ? $this->actionIndex()
            : $this->redirect( [ 'index' ] );
    } 
небольшие пояснения: вьюха index, в ней подключается _grid, содержащий только виджет. Этот же _grid отдается при ajax-запросе напрямую без вьюхи.

Что это: баг, фича, багофича? Я неправильно сделал? Более изящный костыль?
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: Ajax + GridView

Сообщение Nafania »

Не отдавайте grid в экшене delete, а используйте updateGrid
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Ajax + GridView

Сообщение zelenin »

Nafania писал(а):Не отдавайте grid в экшене delete, а используйте updateGrid
Поконкретнее
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: Ajax + GridView

Сообщение Nafania »

$.fn.yiiGridView.update('my-grid');
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Ajax + GridView

Сообщение zelenin »

Nafania писал(а):$.fn.yiiGridView.update('my-grid');
мне кажется, вы путаете с Yii1, а в Yii2 такого нет, поэтому и возникла тема.
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: Ajax + GridView

Сообщение Nafania »

zelenin писал(а):
Nafania писал(а):$.fn.yiiGridView.update('my-grid');
мне кажется, вы путаете с Yii1, а в Yii2 такого нет, поэтому и возникла тема.
Да, извините, не обратил внимания на форум.
Но быстро глянул код в репе, в Yii2 по всей видимости надо так

Код: Выделить всё

$('#' + id).yiiGridView('update', {data: data}); 
https://github.com/yiisoft/yii2/blob/ma ... ew.js#L134
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Ajax + GridView

Сообщение zelenin »

Nafania писал(а):
zelenin писал(а):
Nafania писал(а):$.fn.yiiGridView.update('my-grid');
мне кажется, вы путаете с Yii1, а в Yii2 такого нет, поэтому и возникла тема.
Да, извините, не обратил внимания на форум.
Но быстро глянул код в репе, в Yii2 по всей видимости надо так

Код: Выделить всё

$('#' + id).yiiGridView('update', {data: data});
https://github.com/yiisoft/yii2/blob/ma ... ew.js#L134
это я тоже видел, но судя по всему это кусок нерабочего кода, возможно оставшегося от yii1 (или заготовка на будущее), поскольку метода update там нет
Да и сама переменная id там не объявлена
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Ajax + GridView

Сообщение samdark »

AJAX пока не доделали.
Faradey
Сообщения: 13
Зарегистрирован: 2011.04.21, 10:29

Re: Ajax + GridView

Сообщение Faradey »

А сейчас доделан?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Ajax + GridView

Сообщение zelenin »

Faradey писал(а):А сейчас доделан?
собственно сейчас удаление с обновлением грида легко делается через Pjax. Вчера как раз реализовывал удаление и добавление.
Ответить