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");
}
  1. 前端 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>
  1. 在 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;
}
  1. 前端页面调用
<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>
发布了19 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_24562495/article/details/104513716