thinkphp中下拉菜单选项填充方法,我在使用中用了两种方法。一种是静态填充,一种是动态填充。例如,性别、民族等都是固定值,这种一般是静态填充;而另一种则需要根据数据库中动态查询的数据进行填充,称之谓动态填充。
一、静态填充
前台页面:
<form class="form form-horizontal" id="form-student" url="{:url('student/add')}">
<div class="row cl">
<label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>姓名:</label>
<div class="formControls col-xs-8 col-sm-9">
<input type="text" class="input-text" value="" placeholder="" id="stuname" name="stuname">
</div>
<label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>性别:</label>
<div class="formControls col-xs-8 col-sm-9"> <span class="select-box">
<select name="sex" class="select">
{volist name="sex" id="vo"}
<option value="{$key}">{$vo}</option>
{/volist}
</select>
</span> </div>
</div>
sex.php
return [
'lists' => [
1 => '男',
2 => '女',
],
];
控制器代码:
return $this->fetch('', [
'sex' => config('sex.lists'),
]);
二、动态填充
动态填充主要是从数据库中取出数据,然后填充到下拉列表框中。前台代码基本一样,不需要变化,主要是在控制器中取出数据后,并渲染到前台页面。
如:
//将部门表中所有数据赋值给当前模板
$this->view->assign('deptList',\app\common\model\Depart::all());
在前台页面中volist属性 name="deptList"即可。
或者在控制器中,取出数据,赋值给一个变量,在return语句中,返回这个变量也可。如:
$deptList= model('Depart')->select();
return $this->fetch('', [
'deptList' => $deptList,
]);