您现在的位置是:首页 >技术点滴> PHP 网站首页PHP

thinkPHP5使用widget封装select

  • phper
  • PHP
  • 2019-08-26
  • 134 次阅读
  • 原创
php  
结合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>

$tree 数据格式是 tree格式或者普通的数据列表

5、效果预览

image.png




转载: 感谢您对【phper】网站平台的认可,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处【来源 phper: https://www.birdeyes.cn/article/29/17.html】。

文章评论

请君开口
欢迎您:
    • 最新评论(0)
    暂时没有评论
Top