Как использовать кнопку поиска для gridview - PullRequest
0 голосов
/ 14 июля 2020

Извините за мой английский sh !! Мне нужна ваша помощь. Я хочу выполнить фильтрацию и поиск, нажав кнопку. Итак, сначала я ввожу имя или возраст, или и то, и другое, а затем нажимаю на кнопку, и появляется таблица с данными, которые уже были отфильтрованы. Если все поля пусты и кнопка не нажата, то таблица не должна быть видимый. Таблица появляется только после нажатия. (Я использую базу данных)

Вот мои поля для фильтра и кнопки:

<div class="search">
<?php
echo $form->field($data, 'name')->textInput();
echo $form->field($data, 'age')->textInput();
?>
</div>
<?= Html::submitButton('search'); ?>

И мой вид сетки:

<div class="gridview">
        <?= GridView::widget([
            'dataProvider' => $dataProvider,
            'columns' => [
                ['class' => 'yii\grid\SerialColumn'],
                'name',
                'age',
        ]); ?>
    </div>

Что мне нужно написать в моем контроллер? Я не понимаю, очень хочу это получить !! Всем спасибо за внимание !!

Ответы [ 2 ]

0 голосов
/ 15 июля 2020

Вы можете получить многомерный массив полей поиска в контроллере, используя метод Yii::$app->request->queryParams Или Yii::$app->request->get()

Также, чтобы проверять и не отображать таблицу перед поиском: (или отправить пустое поле)

  1. Создайте свою собственную сетку и страницу поиска с помощью инструмента Gii (Генератор CRUD)
  2. Затем добавьте необходимые коды ( например )

Просмотр файла

    <div class="search">
      <?php $form = ActiveForm::begin([
           'action' => ['index'],
           'method' => 'get',
      ]); ?>
    
      <?= $form->field($data, 'name') ?>
      <?= $form->field($data, 'age') ?>

      <div class="form-group">
          <?= Html::submitButton('Search', ['class' => 'btn btn-primary']) ?>
      </div>
    
      <?php ActiveForm::end(); ?>
    </div>


    <?php if ($show === true): ?>
    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
                'name',
                'age',
         ],
    ]); ?>
    <?php endif ?>

Контроллер (действие индекса)

public function actionIndex()
{
    $searchModel = new YourModelSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    # code...
       
    // Yii::$app->request->queryParams['YourModelSearch'] Or ...
    $get_model = current(Yii::$app->request->queryParams);

    return $this->render('index', [
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
        // Check in whichever way you prefer
        'show' => (!empty($get_model['name']) or !empty($get_model['age'])) ? true : false,
    ]);
}

Вы также можете использовать JQuery.

0 голосов
/ 15 июля 2020

А как насчет поиска по щелчку?

Для поиска из GridView вы должны сделать такую ​​форму поиска:

<div class="search">
<?php $form = ActiveForm::begin([
     'action' => ['index'],
     'method' => 'get',
]); ?>

<?= $form->field($data, 'name') ?>

<?= $form->field($data, 'age') ?>

<div class="form-group">
    <?= Html::submitButton('Search', ['class' => 'btn btn-primary']) ?>
    <?= Html::resetButton('Reset', ['class' => 'btn btn-default']) ?>
</div>

<?php ActiveForm::end(); ?>
</div>

Надеюсь, это поможет вам получить в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...