分享
  • 收藏
  • 举报
    X
    自定义字段下拉框关联其他数据表后在前端显示时筛选字段的问题,已经解决,分享一下
    113
    1

    在后台设定一个自定义字段,类型是下拉框,关联了数据表。


    前端显示结果:

    显然不是我们所需要的。处理方法如下:

    1. 要修改的文件:application/common/fun/Field.php

    2. 要修改的方法:list_filter


    3.添加代码:




    4、完成后的结果



    5、完整方法代码:

       /**
         * 获取列表页的筛选字段
         * @param number $mid 模型ID
         */
        public function list_filter($mid=0){
            $array = \app\common\util\Field_filter::get_field($mid);
            
            // 先对取得的字段选择项进行判断,如果关联了数据表,就先读取一下数据
            foreach ($array AS $f=>$b){
                foreach($b['options'] AS $e=>$s){
                    if(count($lab=explode('@',$s))>1){ //用@符号分割一下,如果分割出的数组大于1,说明是关联了数据表
                        //需要对汉字按汉语拼音排序,按查询构造器写不好,就用原生代码查询了。
                        $sql="select ".$lab[1].",".$b['options'][1]." from qb_".$lab[0]." order by CONVERT(title USING gbk)";
                        $va = query($sql);
        
                        foreach($va AS $ids=>$titles){
                            $vt[$titles[id]]=$titles[title]; //查询到的数组按格式组织保存
                        }
                        $array[$f]['options']=$vt;//组织好的选项数据赋值给数组,进行下面操作。
                    }
                }
            }
    
            foreach ($array AS $name=>$rs){
                $url = \app\common\util\Field_filter::make_url($name,$mid);  //其它字段的网址检测生成,如果值存在就生成,不存在值,就不生成
                $_ar = [];
                foreach($rs['options'] AS $k=>$v){
                    if (is_array($v)) {
    
                        $_ar[] = [ 
                                'key'=>$v[0],
                                'title'=>$k,
                                'url'=>  $url . $name . '_1=' . $v[0] . '&'  . $name . '_2=' . $v[1] . '&'  . $name . '=' . $v[0],
                        ];
                    }else{
                        $_ar[] = [
                                'key'=>$k,
                                'title'=>$v,
                                'url'=>  $url . $name . '=' . $k,
                        ];
                    }                
                }
                $rs['opt'] = $_ar;
                $rs['opt_url'] = $url;
                $array[$name] = $rs;
            }
            return $array;
    
        }

    6.记着锁定下文件,防止更新覆盖。

    4
    赏礼
    赏钱
    收藏
    点击回复
        全部留言
    • 1
    • 人在旅途 普通粉丝 消费:35.58元 1个月前 20:556楼
      不错,学习了
    0 赏钱 赏礼回复
    更多回复
        你可能感兴趣的主题
    恢复多功能编辑器
  • 3 1
  • 推荐内容
    扫一扫访问手机版
    请选择要切换的马甲:

     
    网页即时交流
    QQ咨询
    咨询热线
    020-28998648