如何在列表视图中添加像网格视图一样的过滤搜索Yii2

时间:2017-08-07 09:42:02

标签: php web yii yii2 frameworks

我想添加列表视图的过滤器(有些东西就像网格视图中的内容)但我不知道该怎么做

我想要的过滤器是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',
    ],
]) ?>

它以正确的分页方式显示DataBase中的数据。 但是如何添加过滤器到更新列表(CheckBox和DropDown列表用于更新)??

2 个答案:

答案 0 :(得分:0)

这里是您的代码,您应该根据您的代码替换属性和型号名称。

    [
        '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']
    ],

答案 1 :(得分:-1)

将此行添加到您的视图文件中, 在列表视图小部件上方

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