bllim / laravel-to-jquery-validation
此包通过将Laravel中定义的验证规则转换为jQuery验证规则,使其在客户端工作。它使用jQuery Validation插件。它还允许使用Laravel验证消息,因此您可以显示相同的信息。
Requires
- php: >=5.3.0
- illuminate/html: >=4.2
- illuminate/support: >=4.2
- illuminate/validation: >=4.0
This package is not auto-updated.
Last update: 2024-09-24 03:59:38 UTC
README
此包不再维护。
查看 Laravalid 以获取相同功能和更多功能
- Laravel 4和Laravel 5支持
- 多插件支持
- 可扩展
- 远程规则支持等。
Laravel到Jquery验证
关于
此包通过将Laravel中定义的验证规则转换为jQuery验证规则,使其在客户端工作。它使用Jquery Validation插件。它还允许使用Laravel验证消息,因此您可以显示相同的信息。
功能概述
- 将验证规则从Laravel转换为jQuery验证器
- 与Laravel表单生成器一起工作
- 可以从控制器设置验证规则
- 可以区分数字输入和字符串输入
- 支持用户友好的输入名称
安装
在composer.json中包含bllim/laravel-to-jquery-validation
并运行composer update
。
{
"require": {
"laravel/framework": "4.0.*",
...
"bllim/laravel-to-jquery-validation": "*"
}
...
}
Composer将下载包。下载完成后,打开app/config/app.php
并添加以下服务提供者和别名
'providers' => array( ... 'Bllim\LaravelToJqueryValidation\LaravelToJqueryValidationServiceProvider', ),
您还需要运行以下Artisan命令来发布配置文件和资源。
$ php artisan config:publish bllim/laravel-to-jquery-validation $ php artisan asset:publish bllim/laravel-to-jquery-validation
用法
由于此包使用Jquery Validation插件,因此您应该在视图中包含它(当然也包括jQuery)。对于jQuery验证器中不受支持的规则,您还应在视图中包含jquery.validate.laravel.js
。发布资源后,它们将被复制到您的public文件夹。客户端最后一件事是初始化jQuery验证器插件,如下所示
<script type="text/javascript"> $('form').validate(); </script>
该包使用Laravel表单生成器使验证规则在两侧都生效。因此,您应该使用表单生成器。当通过Form::open打开表单时,您可以提供$rules作为第二个参数
$rules = ['name' => 'required|max:100', 'email' => 'required|email', 'birthdate' => 'date']; Form::open(array('url' => 'foo/bar', 'method' => 'put'), $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在控制器或路由中设置它。这为第一个Form::open设置规则
// in controller or route $rules = ['name' => 'required|max:100', 'email' => 'required|email', 'birthdate' => 'date']; Form::setValidation($rules); // in view Form::open(array('url' => 'foo/bar', 'method' => 'put'), $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,该文件已复制到您的配置目录。默认情况下,它为true。
示例
控制器/路由端
class UserController extends Controller { public static $createValidation = ['name' => 'required|max:255', 'username' => 'required|regex:/^[a-z\-]*$/|max:20', 'email' => 'required|email', 'age' => 'numeric']; public static $createColumns = ['name', 'username', 'email', 'age']; public function getCreate() { Form::setValidation(static::$createValidation); return View::make('user.create'); } public function postCreate() { $inputs = Input::only(static::$createColumns); $rules = static::$createValidation; $validator = Validator::make($inputs, $rules); if($validator->fails()) { // actually withErrors is not really neccessary because we already show errors at client side for normal users return Redirect::back()->withErrors($validator); } // try to create user return Redirect::back()->with('success', 'User is created successfully'); } }
视图端
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Laravel to Jquery Validation</title> </head> <body> {{ Form::open(array('url'=>'create', 'method'=>'post')) }} {{ Form::text('name') }} {{ Form::text('username') }} {{ Form::email('email') }} {{ Form::number('age') }} {{ Form::close() }} <script src="{{ asset('js/jquery-1.10.2.min.js') }}"></script> <script src="{{ asset('js/jquery.validate.min.js') }}"></script> <script src="{{ asset('js/jquery.validate.laravel.js') }}"></script> <script type="text/javascript"> $('form').validate_popover({ highlight: function(element) { jQuery(element).closest('.form-group').removeClass('has-success').addClass('has-error'); }, success: function(element) { jQuery(element).closest('.form-group').removeClass('has-error'); }, events : 'submit', selector : 'input[type!=submit], select, textarea', callback : function( elem, valid ) { if ( ! valid ) { $( elem ).addClass('error'); } } }); </script> </body> </html>
支持的验证规则
- 必需
- 电子邮件
- URL
- 整数
- 数字
- IP
- 相同
- 正则表达式
- 字母
- 字母数字
- 图片
- 日期
- 最小值
- 最大值
- 介于
贡献
您可以分叉并为此包的开发做出贡献。所有pull请求都受欢迎。
设置新的转换规则
该包通过定义的方法进行规则转换,方法名称类似于 _convertRuleRuleName,并通过定义的方法进行消息转换,方法名称类似于 _convertMessageRuleName。您可以添加新的方法来转换当前的规则和消息。如果无需添加即可正常工作,则无需添加转换消息的方法。默认情况下,存在 getErrorMessage 方法来处理错误消息(仅包含 :attribute 参数)。
规则和消息转换方法都接受3个参数,分别是
$parsedRule: ['name' => '', 'parameters' => []] formatted array which gives name and parameters of the rule,
$attribute: attribute name of the input,
$type: type of the current input. by default it is string, if rules of an input contains numeric or integer, it is set numeric.
规则和消息转换方法返回当前输入的属性。例如,如果您正在转换必填规则,您应该通过返回 ['data-rule-required'=>'true']
来添加输入标签 data-rule-requried="true"
。
您可以查看现有方法来了解其工作原理。
已知问题
- 目前不支持一些规则
待办事项
- 测试脚本
- 支持不支持的规则
许可证
在 MIT 许可证下授权