ThinkPHP5使用widget封装select

  1. 在application 目录下新建 widget/Form 的class文件,编写方法 singleSelect

    /**
    * @param $param  参数
    * @param $list  原数据
    * @param $selectId  选中的ID
    * @return mixed
    * @author: hhygyl  * @name: singleSelect
    * @describe:下拉单选
    */
    function singleSelect($param, $list, $selectId)
    {
    $arr = explode('|', $param);
    //参数
    $idStr = $arr[0]; // id和name值
    $isV = $arr[1];  // 1 必选2 否
    $msg = $arr[2];  // 显示名称
    $show_name = $arr[3]; // 显示名称的列名
    $show_value = $arr[4]; // 值列名
    
    $this->assign('idStr',$idStr);
    $this->assign('isV',$isV);
    $this->assign('msg',$msg);
    $this->assign('show_name',$show_name);
    $this->assign('show_value',$show_value);
    $this->assign('dataList',$list);
    $this->assign("selectId",$selectId);
    return $this->fetch("widget/single_select");
    }
  2. 前端 widget 页面

    <select name="{$idStr}" id="{$idStr}" {if $isV==1}lay-verify="required"{/if} lay-search="" lay-filter="{$idStr}" lay-verType="tips" lay-reqText="请选择{$msg}" >
    <option value="">【请选择{$msg}】</option>
    {$dataList|make_option=$selectId,$show_name,$show_value}
    </select>
  3. 在 common.php文件中新建 make_option() 方法

    /**
    * @param $data 下拉框数据源
    * @param int $selected_id 选择数据ID
    * @param string $show_field 显示名称
    * @param string $val_field 显示值
    * @author: hhygyl  * @name: make_option
    * @describe: 下拉选择框组件
    */
    function make_option($data, $selected_id = 0, $show_field = 'name', $val_field = 'id')
    {
    $html = '';
    $show_field_arr = explode(',', $show_field);
    //dump($data);
    if (is_array($data)) {
        foreach ($data as $k => $v) {
            $show_text = '';
            if (is_array($v)) {
                foreach ($show_field_arr as $s) {
                    $show_text .= $v[$s] . ' ';
                }
                $show_text = substr($show_text, 0, -1);
                $val_field && $k = $v[$val_field];
            } else {
                $show_text = $v;
            }
            $sel = '';
            if ($selected_id && $k == $selected_id) {
                $sel = 'selected';
            }
            $html .= '' . $show_text . '';
        }
    }
    echo $html;
    }
  4. 前端页面调用

    <div class="layui-form-item">
    <label class="layui-form-label">所属角色:</label>
    <div class="layui-input-block">
        {:widget('forms/singleSelect',array('role_id|2|所属角色|title_show|id',$tree,0))}
    </div>
    </div>

评论

(= ̄ω ̄=)··· 暂无内容!

回复

您还未登录,请先登录或者注册

微信扫一扫
关注该公众号