# 基础/示例
# 构建表单构建器
通过公共方法YF('demo')
返回一个id为demo
的表单构建器对象。
注意!YunjForm 的完全限定名称为:\yunj\core\builder\YunjForm
- 方式一:链式操作
$builder=YF('demo')
->tab(['base'=>'基础','other'=>'其他'])
->field(function(YunjForm $builder,$tab){...})
->button([...])
->load(function(YunjForm $builder){...})
->submit(function(YunjForm $builder,$data){...});
- 方式二:数组配置
$args = [
"tab"=>['base'=>'基础','other'=>'其他'],
"field"=>function(YunjForm $builder,$tab){...},
"button"=>[...],
"load"=>function(YunjForm $builder){...},
"submit"=>function(YunjForm $builder,$data){...}
];
$builder=YF('demo',$args);
# 渲染输出
详见:表单构建器渲染输出
方法一:页面内只有单一表单时,可参考如下方法:
注意!此方法仅支持渲染一个表单构建器,不需要写视图文件
// 控制器方法中调用如下方法 $builder = ...; return view_form($builder);
方法二:自定义页面内容时,可调用如下方法:
注意!此方法支持一个页面渲染多个表单构建器,需要写视图文件
// 控制器方法中调用如下方法 $builder->assign(); // 视图渲染 return view();
# 视图页面
<!-- 继承公共模板文件 -->
{extend name="$adminPage"}
<!-- 重写content内容 -->
{block name="content"}
<!-- form标签定义type属性为yunj,id与后端构建器id一致 -->
<form type="yunj" id="demo"></form>
{/block}
# 简单示例
# 代码实现如下:
public function sample() {
$builder = YF('demo')
->field(function (YunjForm $builder, $tab) {
return [
"id" => [
"type" => "hidden"
],
"name" => [
"title" => "姓名",
"type" => "text",
"placeholder" => "请输入汉字姓名",
"verify"=>'require|chs'
],
"age" => [
"title" => "年龄",
"type" => "text",
"verify"=>'require|positiveInt'
],
"sex" => [
"title" => "性别",
"type" => "radio",
"options" => [
'male' => '男',
'female' => '女',
]
],
];
})
->button(['reset', 'submit'])
->load(function (){
// ...业务代码
return ['id' => 999, 'name' => '小王', 'age' => 18, 'sex' => 'male'];
})
->submit(function (YunjForm $builder, $data) {
// ...业务代码
return success_json();
});
return view_form($builder);
}