llama-laravel/bootstrap-form

只是一个带有一些Bootstrap特定便捷性的表单构建器。记住旧输入,检索错误消息,并自动处理所有您的Bootstrap模板标记。

dev-master 2017-03-20 22:25 UTC

This package is not auto-updated.

Last update: 2024-09-28 20:25:21 UTC


README

BootForms基于我更通用的Form包,通过添加另一层抽象来快速生成标准Bootstrap3表单的标记。可能不适合您超级定制的准备发布的应用程序,但在原型设计阶段可以节省大量时间!

功能概述

  • 多插件支持 //目前只有一个 :)
    • jQuery验证
  • 可扩展
  • 基于Laravel的表单构建器
  • 验证规则可以从控制器设置
  • 区分数字输入和字符串输入
  • 用户友好的输入名称
  • 远程规则,如唯一和存在

安装

您可以通过在项目的根目录中运行以下命令来使用Composer安装此软件包

composer require llama-laravel/bootstrap-form

如果您正在使用Laravel 5,您可以通过注册包含的服务提供程序来快速开始。

修改providers数组在config/app.php

'providers' => [
    //...
    Llama\BootstrapForm\BootstrapFormServiceProvider::class
  ],

BootstrapForm外观添加到aliases数组在config/app.php

'aliases' => [
    //...
    'Form' => Llama\BootstrapForm\BootstrapFormFacade::class
  ],

您还需要通过运行以下Artisan命令发布配置文件和资源。

$ php artisan vendor:publish --provider="Llama\BootstrapForm\BootstrapFormServiceProvider"

现在您可以使用BootstrapForm开始使用了,请参阅此处

配置

发布配置文件后,您可以在config/laravalid文件夹中找到它。配置参数如下

使用方法

    $rules = ['name' => 'required|max:100', 'email' => 'required|email', 'birthdate' => 'date'];
    Form::open(['url' => 'foo/bar', 'method' => 'put', 'rules' => $rules]);
    Form::text('name');
    Form::text('email');
    Form::text('birthdate');
    Form::close(); // don't forget to close form, it reset validation rules

此外,如果您不想在视图文件中与$rules纠缠,您可以在控制器或路由中设置它,无论是带有还是不带表单名称,使用Form::setValidation($rules, $formName)。如果您不提供表单名称,则为此设置第一个Form::open的规则

    // in controller or route
    $rules = ['name' => 'required|max:100', 'email' => 'required|email', 'birthdate' => 'date'];
    Form::setValidateRules($rules);
    
    // in view
    Form::open(['url' => 'foo/bar', 'method' => 'put', 'name' => 'firstForm', 'rules' => $rules]);
    // some form inputs
    Form::close();

对于与Laravel中的输入类型相关的规则(如max、min),该包将寻找其他提供的规则来了解输入的类型。如果您提供具有max、min规则的整数或数字作为规则,则包假定输入是数字,并将其转换为data-rule-max而不是data-rule-maxlength。

    $rules = ['age' => 'numeric|max'];

转换器默认假定输入是字符串。目前不支持文件类型。

验证消息

转换器默认使用laravel的验证消息(app/lang/en/validation.php)进行客户端验证。如果您想使用jQuery验证消息,您可以在您复制到您的配置目录的包的配置文件中设置useLaravelMessages,false。

插件

jQuery验证 当使用jQuery验证作为html/js验证插件时,您也可以在您的视图中包含任何扩展方法。发布资产后,它将被复制到您的公共文件夹。客户端最后一件事是初始化jQuery验证插件,如下所示

<script type="text/javascript">
$('form').validate({onkeyup: false}); //while using remote validation, remember to set onkeyup false
</script>

扩展

有两种方法可以扩展包以包含您自己的规则。首先,您可以像下面那样动态地扩展当前的转换器插件

Form::getConverter()->getRuleTransformer()->extend('someotherrule', function($parsedRule, $attribute, $type){
    // some code
    return ['data-rule-someotherrule' => 'blablabla'];
});
Form::getConverter()->getMessageTransformer()->extend('someotherrule', function($parsedRule, $attribute, $type){
    // some code
    return ['data-message-someotherrule' => 'Some other message'];
});

其次,您可以在Llama\BootstrapForm\Converter命名空间中创建自己的转换器(它扩展了baseconverter或任何当前的插件转换器),并在配置文件中更改插件配置以使用您自己的插件名称。

注意:如果您正在为某些现有的html/js插件创建转换器,请将其创建在converters文件夹中,并发送pull-request。

插件和支持的规则

jQuery Validation 要使用jQuery Validation,请在配置文件中将插件更改为Llama\BootstrapForm\Converter\JqueryValidation\Converter

注意:添加一些规则很简单。请检查相关转换器的Rule类。

贡献

您可以fork并为此包的开发做出贡献。所有pull-request都欢迎。

转换逻辑 包通过使用转换器(在src/converters中)进行规则转换。它使用所选插件的Converter类,该类扩展了BaseConverter/Converter类。您可以查看现有方法和插件,了解其工作原理。解释将很快完成。

其他提示

帮助块

您可以使用helpBlock()助手在表单元素下方添加帮助块。

Form::help('一个强大的密码应该足够长,难以猜测。')

注意:如果存在验证错误,此帮助块将自动被错误覆盖。

许可证

MIT许可证下授权