【问题标题】:yii2 GridView Search Fields outside Tableyii2 GridView 搜索表外的字段
【发布时间】:2016-02-12 18:25:11
【问题描述】:

我正在使用 Yii2 框架和 GridView 来显示带有 SearchModel、DataProvider 和网格视图过滤器的数据。我还使用 Pjax 来允许使用 Ajax 进行分页和排序。到目前为止工作正常。

现在我想设置一个不在表格标题中的搜索字段。在最后一列中只有 2 个看起来不太好。所以现在这有点棘手。如何操作网格的发布数据?有简单的解决方案吗?是否有任何示例或想法如何设置?

【问题讨论】:

标签: php gridview yii2


【解决方案1】:

例如,我只有一个过滤字段。它的日期范围有两个禁用的输入和日历小部件。

鉴于:

<div class="col-md-4 col-md-offset-8">
            <?php echo $this->render('_filter', [
                'model' => $filterModel
            ]); ?>
        </div>
        <div class="col-md-12">
            <?php Pjax::begin(['id' => 'order-statistics']); ?>
            <?php echo GridView::widget([
                'dataProvider'   => $dataProvider,
                'filterSelector' => '#filter-form .js-date-value',
                'showFooter'     => true,
                'columns'        => [ 

在_filter.php中

$this->registerAssetBundle(DateRangePickerAsset::className());

<?php echo Html::beginTag('div', ['id' => 'filter-form']); ?>
    <div class="input-group">
        <span class="input-group-addon js-date-calendar" title="<?php echo Yii::t('statistics', 'Select date'); ?>"
              role="button" data-max-date="<?php echo date('Y-m-d', strtotime('+1 day')); ?>">
            <?php echo Html::icon('calendar', ['tag' => 'i']); ?>
        </span>
        <?php echo Html::activeTextInput($model, 'from', [
            'id'       => 'js-date-from',
            'class'    => 'form-control js-date-from js-date-value',
            'readonly' => true
        ]); ?>
        <span class="input-group-addon js-date-remove" title="<?php echo Yii::t('statistics', 'Clear fields'); ?>"
              role="button">
            <?php echo Html::icon('remove', ['tag' => 'i']); ?>
        </span>
        <?php echo Html::activeTextInput($model, 'to', [
            'id'       => 'js-date-to',
            'class'    => 'form-control js-date-to js-date-value',
            'readonly' => true
        ]); ?>
    </div>
<?php echo Html::endTag('div');

【讨论】:

    【解决方案2】:

    我所做的是将视图中的_search.php 添加到网格视图所在的页面中,并使用GridView$searchModel 来实现这一点。

    例如使用 Gii CRUD 自动生成的视图文件,取消注释此行中的 echo

    <?php // echo $this->render('_search', ['model' => $searchModel]); ?>
    

    这将是在 gridview 之外获取搜索表单的最简单方法。 这在http://www.yiiframework.com/doc-2.0/guide-output-data-widgets.html#separate-filter-form中进行了解释

    【讨论】:

      【解决方案3】:

      我不知道我们是否需要相同的,但将搜索字段放在您在 gridview 属性中添加 'filterPosition' => 'header' 的 gridview 之前

      【讨论】:

        【解决方案4】:
        <?php // echo $this->render('_search', ['model' => $searchModel]); ?>
        

        我用它来呈现搜索,有没有可能启用filteronfocusout 的方法?这样搜索就会触发,而无需点击搜索按钮。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-08-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-19
          相关资源
          最近更新 更多