【问题标题】:How to Add Filter Search Like Grid View In List View Yii2如何在列表视图 Yii2 中添加像网格视图一样的过滤搜索
【发布时间】:2018-01-14 13:55:04
【问题描述】:

我想使用列表视图添加过滤器(类似于网格视图中的内容),但我不知道该怎么做

我想要的过滤器是 CheckBox 和 DropDown 选项。

这是我在 SiteController 中的操作代码

<?php

public function actionMobiles(){
   $searchModel = new MobileSearch();
    //$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
 //$dataProvider = $searchModel->search(Yii::$app->request->queryParams);

    $dataProvider = new ActiveDataProvider([
    'query' => Mobile::find(),
    'pagination' => [
    'pageSize' => 1,
],
]);

// get the posts in the current page
//$posts = $dataProvider->getModels();
return $this->render('mobiles', ['dataProvider' => $dataProvider,'searchModel' => $searchModel]);


}

?>

在查看文件中我有 2 个文件:

这是手机视图:

 <?php
 use yii\widgets\ListView;
 use yii\helpers\Html;
use yii\grid\GridView;
use yii\helpers\ArrayHelper ;
use app\models\Mobile;
 ?>

 <?= ListView::widget([
    'dataProvider' => $dataProvider,
       //'filterModel' => $searchModel,
      'itemView' => '_mobiles',

]); ?>

在我拥有的 _mobiles 中:

<?php
use yii\widgets\DetailView;
?>

<?= DetailView::widget([
    'model' => $model,
    'attributes' => [
        //'id',
        'id',
        'title',
        //'ativo',
    ],
]) ?>

它通过分页正确显示数据库中的数据。 但是如何在更新列表中添加过滤器(CheckBox 和 DropDown List 用于更新)?

【问题讨论】:

  • 在您的小部件中添加 'filterModel' => $searchModel
  • 在列表视图中??? @Gunnrryy
  • 设置未知属性:yii\widgets\ListView::filterModel @Gunnrryy
  • 是的,看到了,您可以使用 gridView 或 dataTables 而不是 listView 吗?选择 listView 有什么特别的理由吗?
  • @Gunnrryy 我想列出产品并过滤它们。我搜索了很多次并建议我使用列表视图

标签: php web yii yii2 frameworks


【解决方案1】:

这是给你的代码,你应该根据你的替换属性和模型名称。

    [
        'attribute' => 'attribute_name',
        'label' => 'Email',
        'value' => function($model){
            return $model->attribute_name;
        },
        'filterType' => GridView::FILTER_SELECT2,
        'filter' => \yii\helpers\ArrayHelper::map([Your Model]::find()->asArray()->all(), 'id', 'email'),
        'filterWidgetOptions' => [
            'pluginOptions' => ['allowClear' => true],
        ],
        'filterInputOptions' => ['placeholder' => 'Email', 'id' => 'grid--search-email']
    ],

【讨论】:

  • 这和其他网格视图一样吗?可以分页吗?
  • 它只是网格视图中的另一个属性。您可以将其添加为新列,也可以分页。
【解决方案2】:

在您的视图文件中添加这一行, 就在列表视图小部件的上方

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 2017-08-29
    • 1970-01-01
    相关资源
    最近更新 更多