livecms / forms
Live CMS Forms
v0.0.1
2018-07-22 15:18 UTC
Requires
- laravelcollective/html: ^5.5
- livecms/transports: ^0.1.0
This package is not auto-updated.
Last update: 2024-09-15 05:34:13 UTC
README
这是什么?
此包可以根据设置数组创建表单组件(即.文本框、选择、单选、复选框)。
除此之外,您还可以创建自己的组件,由html和javascript组成。
功能
- LaravelCollective HTML包的所有优点
- 基于设置数组创建表单和组件
- 支持Jquery验证
- 可用的组件,可直接使用
- 文本框
- 电话
- 数字
- 电子邮件
- 密码
- 文本区域
- 复选框
- 单选按钮
- 选择
- Select2
- 图片
- 布尔值(带是/否选项的单选按钮)
- 定义自己的组件
- 定义自己的验证脚本
注意
如何使用?
通过composer安装
composer require livecms/forms
发布配置文件
php artisan vendor:publish --provider="LiveCMS\Form\FormServiceProvider"
编辑'form.php'配置文件。
创建表单
// controller use LiveCMS\Form\Forms; $form = Forms::create()->setComponents([...])->render(); // view {!! Form::open(['url' => '/your/route']) !!} {!! $form !!} {!! Form::close() !!} <script> {!! Form::javascript() !!} </script>
在表单中设置
它与LaravelCollective HTML中的Form::open()具有相同的参数
// controller $form = Forms::create(['url' => '/your/route', 'method' => 'PUT', 'class' => 'form-inline']) ->setComponents([...]) ->render(); // view {!! $form !!} <script> {!! Form::javascript() !!} </script>
您可以创建多个表单并为每个表单设置一个名称
// controller Forms::create([...])->setComponents([...])->setName('form1'); Forms::create([...])->setComponents([...])->setName('form2'); // view {!! Form::render('form1') !!} {!! Form::render('form2') !!} <script> {!! Form::javascript() !!} </script>
可用的组件
您可以在文件夹中看到这些文件
/vendor/livecms/forms/src/Components
- 文本框,类型:'text'
- 电话,类型:'tel'
- 数字,类型:'number'
- 电子邮件,类型:'email'
- 密码,类型:'password'
- 文本区域,类型:'textarea'
- 复选框,类型:'checkbox'
- 单选按钮,类型:'radio'
- 选择,类型:'select'
- Select2,类型:'select2'
- 图片,类型:'image'
- 布尔值,类型:'boolean'
如何使用组件
$components = [ 'comp1' => [ 'type' => 'text', // required 'label' => null, // optional 'value' => null, // optional 'default' => null, // optioal 'options' => [], // optional and this only for checkbox, radio, select, select2 'attributes' => [], // optional ], ... 'comp-n' => [ 'type' => 'select', 'options' => [ 'one', 'two', 'three', ], 'attributes' => [ 'required' => true, 'class' => 'input-select', ] ] ]; Form::create([...])->setComponents($components)->setName('form1');
添加全局属性
Forms::create([...]) ->setComponents([...]) ->addGlobalProperties([ 'required' => '*', // implemented to all components, you can use empty array [] 'class:input-select' => ['province', 'city', 'region'], 'data-image:landscape' => ['image', 'cover'], ]) ->setName('form1'); // the result all of defined components will get what you write in key of the array // example for : 'data-image:landscape' => ['image', 'cover'] // the result : /** * <input type="file" name="image" data-image="landscape" /> * <input type="file" name="cover" data-image="landscape" /> */
添加自定义组件
- 创建一个类,您可以在其中扩展来自'LiveCMS\Form\Components\BaseComponent'类的类
由于它包含一个抽象方法render(),您必须定义自己的render()方法。您也可以从可用的组件中查看示例或从中扩展。请参阅文件夹中的所有文件/vendor/livecms/forms/src/Components/BaseComponent.php
/vendor/livecms/forms/src/Components
- 在'form'配置文件中定义自己的组件
'components' => [ 'text' => \App\Forms\CustomeTextbox::class, 'image' => \App\Forms\CustomeImage::class, ],
使用验证脚本
Forms::create([...])->setComponents([...])->useValidation()->setName('form1');
您可以通过以下方式禁用验证
Forms::create([...])->setComponents([...])->useValidation(false)->setName('form1');
注意:默认情况下,验证脚本需要jquery validation js
自定义验证
- 创建自己的javascript文件
- 在'form'配置文件中定义它
'scripts' => [ 'validation' => '/path/to/javascript/file', ],
添加自定义脚本
- 创建自己的javascript文件
- 在'form'配置文件中定义它,但使用除'validation'之外的其他名称,因为它仅保留用于验证
'scripts' => [ 'validation' => '/path/to/javascript/file', 'customscript' => '/path/to/javascript/file', ],
- 调用它
Forms::create([...])->setComponents([...])->addScript('customscript')->setName('form1');
如果您想取消添加脚本,将第二个参数填充为'false'
->addScript('script_name', false)
用数据填充表单
$components = [ 'name' => ['type' => 'text'], 'email' => ['type' => 'email'], ]; $datas = ['name' => 'Mokhamad Rofiudin', 'email' => 'mokh@rofiudin.com']; Form::create([...]) ->setComponents($components) ->fill($datas) ->setName('form1') ->render();
授权协议
MIT
贡献
分支此仓库并提交拉取请求
问题与讨论
请创建新问题或查看已关闭的问题。