使用yii2下拉列表全局过滤

时间:2016-07-08 15:19:37

标签: yii2 dropdown yii2-basic-app

我的下拉列表显示了模型中的数据,但是当我选择它们时,它并没有相应地过滤数据。

if (knob.x > 0 && knob.x < 0.01) {
    knob.x = 0;
}
//etc.

上面提到的是搜索表单中的下拉列表。在filterSearch模型中,我使用了我的查询,如下面提到的代码。

  <?php  $items = ArrayHelper::map(app\models\Facility::find()->all(),'facility_id' ,'facility_country');?>

   <?= $form->field($model, 'facility_country')->dropDownList($items)->label(false); ?>

我可以知道问题是什么吗?谢谢!!

2 个答案:

答案 0 :(得分:1)

$items变量的值来自您的\app\models\Facility类,其数组格式如下:

[
    'facility_id' => 'facility_country',
    ...
]

当您将此数组与dropDownList()一起使用时,您说您正在发送密钥&#39; facility_id&#39;到你的形式。

因此,在您的搜索模型中,您需要按ID搜索,例如:

->orFilterWhere(['like', 'facility_id', $this->facility_country]);

或者您也可以按名称进行搜索(我想这就是您想要的):

$items = ArrayHelper::map(app\models\Facility::find()->all(),'facility_country' ,'facility_country');

答案 1 :(得分:0)

解决方案非常简单..问题是它没有提交只是无所事事的表单。 我不只是提交刚刚添加onchange事件的表单作为下面的代码。

<?php  $items = ArrayHelper::map(app\models\Facility::find()->all(),'facility_country' ,'facility_country');?>
    <?= $form->field($model, 'facility_country')->dropDownList($items,['class'=> 'col-sm-2 col-lg-2 col-xs-7 pull-left', 'style'=> 'height:34px;','onchange' => 'this.form.submit()'])->label(false);?>

谢谢你的帮助..