【问题标题】:How to use search button for gridview如何使用gridview的搜索按钮
【发布时间】:2020-07-14 17:06:45
【问题描述】:

对不起我的英语!! 我需要你的帮助。我想通过单击按钮进行过滤和搜索。所以,首先,我输入一个姓名或年龄,或者两者都输入,然后点击按钮,表格就会出现已经过滤的数据。如果所有字段都是空的并且没有按下按钮,那么表格不应该是可见的。该表仅在单击后出现。 (我正在使用数据库)

这是我的过滤器和按钮字段:

<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>

我需要在控制器中写什么?没看懂,好想入手!! 谢谢大家的关注!!

【问题讨论】:

  • 如果字段为空,您可以使用JQuery 隐藏gridview。
  • @SergheiLeonenco 谢谢,明白了。那么点击搜索呢? :(
  • And what about search by click 是什么意思?
  • @SergheiLeonenco 当我点击我用过滤器搜索数据时很好

标签: php search gridview filter yii2


【解决方案1】:

那么点击搜索呢?

要从 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>

希望它可以帮助您找到正确的方向。

【讨论】:

  • 谢谢!你能告诉我(我是 Yii2 的新手,很抱歉提出愚蠢的问题)如何在提交表单后使用输入值?例如,我在字段“Bob”中写了名字,提交表单,之后我不知道如何获取这个名字,我想在另一个视图中使用它
  • 我给你看了一个搜索表单。您应该有一个 model 命名为 SearchModel 之类的名称,您可以在其中设置属性。看看这里:yiiframework.com/wiki/653/…。有很多资源可以让您获得所需的信息,进行研究。
  • 再次感谢您:) 但它不是用于搜索,我的意思是我想在提交后使用输入中的值,例如,以另一种形式显示“你好,我的名字是 name from field 鲍勃”。我在问那个:))))
  • 只要您提出get 请求,您就可以使用Yii::$app-&gt;request-&gt;get() 方法获得您。
【解决方案2】:

可以使用Yii::$app-&gt;request-&gt;queryParamsYii::$app-&gt;request-&gt;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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    相关资源
    最近更新 更多