ipridham / bootforms-json
只是一个表单构建器
Requires
- php: >=5.4.0
- ipridham/form-json: dev-master
Requires (Dev)
- mockery/mockery: 0.9.*
- phpunit/phpunit: 3.7.*
- satooshi/php-coveralls: dev-master
This package is auto-updated.
Last update: 2024-09-04 15:30:01 UTC
README
BootForms 建立在更通用的 Form 包的基础上,通过添加另一层抽象来快速生成标准 Bootstrap 3 表单的标记。可能不适合您的超级定制品牌发布应用,但在原型设计阶段可以节省大量时间!
使用 Composer 安装
您可以通过在项目的根目录下终端中运行此命令来使用 Composer 安装此包
composer require adamwathan/bootforms
Laravel
如果您使用 Laravel 4 或 5,可以通过注册包含的服务提供程序快速开始。
修改 config/app.php 中的 providers 数组以包含 BootFormsServiceProvider
'providers' => [ //... 'AdamWathan\BootForms\BootFormsServiceProvider' ],
将 BootForm 门面添加到 config/app.php 中的 aliases 数组
'aliases' => [ //... 'BootForm' => 'AdamWathan\BootForms\Facades\BootForm' ],
现在您可以通过调用 BootForm 门面上的方法来开始使用 BootForms
BootForm::text('Email', 'email');
Laravel 之外
在 Laravel 之外使用稍微有点复杂,因为您需要构建一个依赖栈,但这并不太难。
$formBuilder = new AdamWathan\Form\FormBuilder; $formBuilder->setOldInputProvider($myOldInputProvider); $formBuilder->setErrorStore($myErrorStore); $formBuilder->setToken($myCsrfToken); $basicBootFormsBuilder = new AdamWathan\BootForms\BasicFormBuilder($formBuilder); $horizontalBootFormsBuilder = new AdamWathan\BootForms\HorizontalFormBuilder($formBuilder); $bootForm = new AdamWathan\BootForms\BootForm($basicBootFormsBuilder, $horizontalBootFormsBuilder);
注意:当不使用为 Laravel 定义的实现时,您必须提供自己的
AdamWathan\Form\OldInputInterface和AdamWathan\Form\ErrorStoreInterface实现。
使用 BootForms
基本用法
BootForms 允许您在一组调用中创建标签和表单控件,并将其包装在一个表单组中。
// <form method="POST"> // <div class="form-group"> // <label for="field_name">Field Label</label> // <input type="text" class="form-control" id="field_name" name="field_name"> // </div> // </form> {!! BootForm::open() !!} {!! BootForm::text('Field Label', 'field_name') !!} {!! BootForm::close() !!}
注意:在尝试创建字段之前,不要忘记调用
open()表单!BootForms 需要知道您是打开了垂直表单还是水平表单,才能渲染字段,因此如果您忘记,将会出现错误。
自定义元素
如果您需要以任何方式自定义表单元素(例如,为文本元素添加默认值或占位符),只需链式调用所需的调用,它们将传递到底层的表单元素。
可以通过 attribute 方法添加属性,或者简单地将属性名称用作方法名称。
// <div class="form-group"> // <label for="first_name">First Name</label> // <input type="text" class="form-control" id="first_name" name="first_name" placeholder="John Doe"> // </div> BootForm::text('First Name', 'first_name')->placeholder('John Doe'); // <div class="form-group"> // <label for="color">Color</label> // <select class="form-control" id="color" name="color"> // <option value="red">Red</option> // <option value="green" selected>Green</option> // </select> // </div> BootForm::select('Color', 'color')->options(['red' => 'Red', 'green' => 'Green'])->select('green'); // <form method="GET" action="/users"> BootForm::open()->get()->action('/users'); // <div class="form-group"> // <label for="first_name">First Name</label> // <input type="text" class="form-control" id="first_name" name="first_name" value="John Doe"> // </div> BootForm::text('First Name', 'first_name')->defaultValue('John Doe');
有关更多信息,请参阅 我的基本 Form 包 的文档。
减少样板代码
典型的 Bootstrap 表单样板代码可能看起来像这样
<form> <div class="form-group"> <label for="first_name">First Name</label> <input type="text" class="form-control" name="first_name" id="first_name"> </div> <div class="form-group"> <label for="last_name">Last Name</label> <input type="text" class="form-control" name="last_name" id="last_name"> </div> <div class="form-group"> <label for="date_of_birth">Date of Birth</label> <input type="date" class="form-control" name="date_of_birth" id="date_of_birth"> </div> <div class="form-group"> <label for="email">Email address</label> <input type="email" class="form-control" name="email" id="email"> </div> <div class="form-group"> <label for="password">Password</label> <input type="password" class="form-control" name="password" id="password"> </div> <button type="submit" class="btn btn-default">Submit</button> </form>
BootForms 为您做出了一些决定,并允许您进一步精简
{!! BootForm::open() !!}
{!! BootForm::text('First Name', 'first_name') !!}
{!! BootForm::text('Last Name', 'last_name') !!}
{!! BootForm::text('Date of Birth', 'date_of_birth') !!}
{!! BootForm::email('Email', 'email') !!}
{!! BootForm::password('Password', 'password') !!}
{!! BootForm::submit('Submit') !!}
{!! BootForm::close() !!}
自动验证状态
BootForms 的另一个优点是,如果它看到错误存储中对该控件有错误,将自动为您的控件添加错误状态和错误消息。
本质上,这会将通常看起来像这样的代码
<div class="form-group {!! $errors->has('first_name') ? 'has-error' : '' !!}">
<label for="first_name">First Name</label>
<input type="text" class="form-control" id="first_name">
{!! $errors->first('first_name', '<p class="help-block">:message</p>') !!}
</div>
并减少到这样
{!! BootForm::text('First Name', 'first_name') !!}
...如果会话中有错误,则自动添加 has-error 类。
水平表单
要使用水平表单而不是标准基本表单,只需将 BootForm::open() 调用替换为 openHorizontal($columnSizes) 调用即可
// Width in columns of the left and right side // for each breakpoint you'd like to specify. $columnSizes = [ 'sm' => [4, 8], 'lg' => [2, 10] ]; {!! BootForm::openHorizontal($columnSizes) !!} {!! BootForm::text('First Name', 'first_name') !!} {!! BootForm::text('Last Name', 'last_name') !!} {!! BootForm::text('Date of Birth', 'date_of_birth') !!} {!! BootForm::email('Email', 'email') !!} {!! BootForm::password('Password', 'password') !!} {!! BootForm::submit('Submit') !!} {!! BootForm::close() !!}
其他技巧
隐藏标签
您可以通过从任何元素定义中链式调用 hideLabel() 辅助函数来隐藏标签。
BootForm::text('First Name', 'first_name')>hideLabel()
标签仍会在标记中生成,但会使用 Bootstrap 的 .sr-only 类隐藏,这样就不会降低您表单的可访问性。
帮助块
您可以使用 helpBlock() 辅助函数在表单元素下方添加帮助块。
BootForm::text('密码', 'password')>helpBlock('一个强大的密码应该既长又难以猜测。')
注意:如果存在验证错误,此帮助块将被自动覆盖。
模型绑定
BootForms使得将对象绑定到表单以提供默认值变得非常简单。了解更多信息请参阅这里。
BootForm::open()->action( route('users.update', $user) )->put() BootForm::bind($user) BootForm::close()
相关资源
- Laravel Translatable BootForms,将BootForms与Dimsav的Laravel Translatable包集成