多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Former的使用 [Former框架地址](https://github.com/formers/former) ## 完整的一个例子 **指定使用的框架** `Former::framework('TwitterBootstrap3');` ~~~ Former::horizontal_open() // 开局用什么布局,什么方法 ->id('MyForm') // 指定表单的id ->rules(['name' => 'required']) //指定验证规则 ->action('http://1222') // 指定提交地址 ->method('POST'); // 指定提交方式 Former::lg_text('name') // 指定大小,有 lg,md,sm,xs ->class('myclass') // 替换类(原有的会被干掉) ->addClass('song') // 增加类 ->id('bg') // 指定id ->label('Full name') //指定标签名 ->value('Joseph') // 指定value ->required() // 必填,须要支持html5 ->placeholder() // 提示信息 ->help('请输入你的名字'); //类似的有inlineHelp,blockHelp,data_placeholder Former::textarea('comments') // 指定名字 ->rows(10) // 指定行 ->columns(20) ->autofocus(); Former::actions() ->large_primary_submit('提交') ->large_inverse_reset('重置'); Former::close(); // 结束表单 ~~~ * * * * * ## 标准元素 **1. 隐藏输入框** `Former::hidden('name')->value(1)` **2. 普通输入框** `Former::text('foo')->label('My field')` **3. 普通文本框** `Former::textarea('foo')->value('我的')` **4. 下拉选择列表** options()第一个参数是填充下拉列表键值对,第二个参数是默认选择的项目 `Former::select('foo')->options(['1' => '第一个','2'=>'第二个','3'=>'第三个'],2);` 等价于 `Former::select('foo')->options(['1' => '第一个','2'=>'第二个','3'=>'第三个'])->select('2');` **5. 多选下拉框** 用法和下拉选择列表基本一致 `Former::multiselect('foo[]')->options(['1' => '第一个','2'=>'第二个','3'=>'第三个'])` **6. 单选框** 已选择 `Former::checkbox('foo')->check();` 未选择 `Former::checkbox('foo');` **7. 圆点选择框** `Former::radio('foo')->check()` * * * * * ## 一些方法 **1. 强制赋值(忽略populate()的自动赋值)** **2. 下拉选择框提示** `Former::select('foo')->placeholder('Select one option...')->options(['1' => '第一个','2'=>'第二个','3'=>'第三个'])` **3. 为输入框添加头尾图标** 添加尾巴图标 `Former::text('foo')->append('bar')` 添加头图标 `Former::text('foo')->prepend('bar')` 也可以添加多个 `Former::text('foo')->prepend('@', '$')` `4. 为输入框所在的组添加类` `Former::text('foo')->addGroupClass('bar')` **5. 自动填充表单** 会自动根据字段名填充表单 'name' with the value 'value `Former::populate( array('name' => 'value') )` * 也可以使用模型 * `Former::populate( Client::find(2) )` * 比如一些关联的模型,可以指定数据字段填充 `Former::populateField('client', $project->client->name)` * 或是指定深度 `Former::text('customer.name.address')` * 面对这些有深度的字段我们也可以重命名 `Former::text('comment.title')->name('title')` * 也可以直接查询数据库填充下拉列表 第一个参数是模型 第二个参数是options 第三个参数是option对应的值 `Former::select('负责人')->fromQuery(App\Models\User::all(), 'name', 'id')` **6. 设置状态** `Former::text('name')->state('error')` ## 文件上传 主要的方法有accept()和max() **1. 判断类型** `Former::files('avatar')->accept('image')` `Former::files('avatar')->accept('gif', 'jpg')` `Former::files('avatar')->accept('image/jpeg', 'image/png')` **2. 判断大小,指定单位** `Former::file('foo')->max(2, 'MB')` `Former::file('foo')->max(400, 'Kb')` `Former::file('foo')->max(1, 'TB')` ## 复选框和单选 **1. 创建一个单选框** `Former::checkbox('单选')` **2. 创建一个带文字的单选框** ~~~ Former::checkbox('单选带文字') ->text('YO CHECK THIS OUT') ->check() ~~~ **3. 创建多个框 ** ~~~ Former::checkboxes('checkme') ->checkboxes('第一个', '第二个', '第三个', '第四个') ~~~ **4. 创建内联的多个框** ~~~ Former::checkboxes('checkme') ->checkboxes('第一个', '第二个', '第三个', '第四个')->inline() ~~~ **5. 创建只能单选的圆点** `Former::stacked_radios('foo')->radios('第一', '第二')` **6. 创建嵌套的多选框** 其中checkboxes叫level,那么他的子选框就叫level_1 其中0表示父,true表示选了 ~~~ Former::checkboxes('level') ->checkboxes(0, 1, 2) ->check(array('level_0' => true, 'level_1' => false, 'level_2' => true)) ~~~ 有时候我们需要为选框添加属性时,那么可以这样 ~~~ Former::radios('radio') ->radios(array( '选框1' => array('name' => 'Jason1', 'value' => 'bar', 'class' => 'bar'), '选框2' => array('name' => 'Jason2', 'value' => 'bat', 'class' => 'gag'), )) ~~~