【解决】Yii2 girdview列搜索,枚举值0,那么搜索后全部和这个0值选项就会冲突。

js和php都是弱类型,碰到这个bug时候一般view中修改枚举值用另外一个枚举值代替0,然后在searchModel中的search方法中再来修正这个值。


有时候searchModel不是单个生成的,可能是抽象成通用的,这个时候,枚举字段又不统一,处理起来就比较烦。


现在有一种能在view里通过前端的方法来修复一下(虽然比较丑,但相当方便)


1.把url 的参数传到view

'params' => Yii::$app->request->queryParams

2.视图文件中假如girdwiew中model有这么一个属性

[
 'attribute' =>  'flag',
 'filter' => ['0'=>'待审核','1'=>'已上架','2'=>'已下架']
]

3.在底部用js(这里用的jquery)对筛选项搜索下拉框进行修复

<?php if(!isset($params["SearchModel"]["flag"])){$params["SearchModel"]["flag"]=''; }?>
<?php if($params["SearchModel"]["flag"] ===''){ ?>
    <script> $("select[name=SearchModel\\[flag\\]]").val([]);</script>
<?php }?>


评论区
登陆 后评论!