使用 yii2 下拉列表全局过滤
Filter globally using yii2 dropdown list
我有显示模型数据的下拉列表,但是当我 select 它们时,它不会相应地过滤数据。
<?php $items = ArrayHelper::map(app\models\Facility::find()->all(),'facility_id' ,'facility_country');?>
<?= $form->field($model, 'facility_country')->dropDownList($items)->label(false); ?>
上面提到的是搜索中的下拉列表 form.In filterSearch 模型 我已经像下面提到的代码一样使用了我的查询。
$query->orFilterWhere(['like', 'facility_name', $this->facility_name])
->orFilterWhere(['like', 'facility_country', $this->facility_country]);
我能知道是什么问题吗?谢谢!!
您的 $items
变量的值来自您的 \app\models\Facility
class,在具有以下格式的数组中:
[
'facility_id' => 'facility_country',
...
]
当您将此数组与 dropDownList() 一起使用时,您是在将密钥 'facility_id' 发送到您的表单。
因此,在您的搜索模型中,您需要按 id 进行搜索,例如:
->orFilterWhere(['like', 'facility_id', $this->facility_country]);
或者您也可以按名称进行搜索(我猜这就是您想要的):
$items = ArrayHelper::map(app\models\Facility::find()->all(),'facility_country' ,'facility_country');
解决方案非常简单。问题是没有提交表单,这只是什么都不做。
我不只是提交表单,只是添加了 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);?>
感谢大家的帮助..
我有显示模型数据的下拉列表,但是当我 select 它们时,它不会相应地过滤数据。
<?php $items = ArrayHelper::map(app\models\Facility::find()->all(),'facility_id' ,'facility_country');?>
<?= $form->field($model, 'facility_country')->dropDownList($items)->label(false); ?>
上面提到的是搜索中的下拉列表 form.In filterSearch 模型 我已经像下面提到的代码一样使用了我的查询。
$query->orFilterWhere(['like', 'facility_name', $this->facility_name])
->orFilterWhere(['like', 'facility_country', $this->facility_country]);
我能知道是什么问题吗?谢谢!!
您的 $items
变量的值来自您的 \app\models\Facility
class,在具有以下格式的数组中:
[
'facility_id' => 'facility_country',
...
]
当您将此数组与 dropDownList() 一起使用时,您是在将密钥 'facility_id' 发送到您的表单。
因此,在您的搜索模型中,您需要按 id 进行搜索,例如:
->orFilterWhere(['like', 'facility_id', $this->facility_country]);
或者您也可以按名称进行搜索(我猜这就是您想要的):
$items = ArrayHelper::map(app\models\Facility::find()->all(),'facility_country' ,'facility_country');
解决方案非常简单。问题是没有提交表单,这只是什么都不做。 我不只是提交表单,只是添加了 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);?>
感谢大家的帮助..