как изменить вид сетки через Ajax? yii2

Прежде всего, я работаю с фреймворком yii2.0.

Правильно, у меня есть gridview, который извлекает данные из моей базы данных. В настоящее время он работает, и если я использую какой-либо поиск, он перезагрузит страницу с новыми данными.

Однако теперь я создал несколько категорий выпадающего списка. В основном существует три уровня категорий, то есть основная категория, подкатегория и дочерняя категория. На данный момент у меня есть два запроса ajax, которые будут заполнять подкатегорию и дочернюю категорию при изменении раскрывающегося списка. (Он заполняет категории из моей базы данных).

Теперь я хочу, чтобы в представлении сетки отображались дела, связанные с дочерними категориями. Поэтому, когда я выбираю свою первую категорию, затем выбираю вторую и дочернюю категорию, в представлении сетки отображается относящийся к ней контент.

На данный момент мой контроллер отображает searchModel + dataProvider для представления сетки, как показано ниже::

public function actionIndex()
{
    $searchModel = new CaseSearch();  
    $allCategory = Category::find()->all();

    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

    return $this->render('index', [
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
        'allCategory' => $allCategory
    ]);
}

и, на мой взгляд, он отображает данные следующим образом:

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        'case_id',
        'name',
        'judgement_date',
        'year',
        ['class' => 'yii\grid\ActionColumn'],
    ],
]); ?>

Как мне добиться этого? Должен ли я создать что-то _grid.php, которое я могу затем отобразить из своего представления и отправить туда запрос ajax?


person Matthew Smart    schedule 01.04.2015    source источник


Ответы (2)


Самый простой способ добиться этой функциональности — обернуть GridView встроенным виджетом Pjax следующим образом:

use yii\widgets\Pjax;

<?php Pjax::begin(); ?>

// Place GridView code here

<?php Pjax::end(); ?>

Из js вы можете инициировать отправку формы следующим образом:

$('.grid-view-selector').yiiGridView('applyFilter');

Если прикреплен pjax, контент будет заменен динамически без перезагрузки страницы.

Официальные документы:

person arogachev    schedule 01.04.2015

Я бы, вероятно, использовал GridView $filterSelector. И добавьте селектор для раскрывающегося списка вашей пользовательской категории. После того, как вам нужно будет добавить атрибут категории для вашей модели поиска. В конце концов, вы получите фильтр с вашим настраиваемым полем, добавленным к стандартным некоторым

person Colohanin Nik    schedule 01.04.2015