npmweb / client-validation-generator
用于生成客户端验证的服务器端代码,通常基于来自不同验证框架的服务器端验证规则
Requires
- laravelcollective/html: ~4.1 || ~5.0
Requires (Dev)
- laravel/framework: ~4.1 || ~5.0
- mockery/mockery: dev-master@dev
README
用于生成客户端验证的服务器端代码,通常基于来自不同验证框架的服务器端验证规则。当前实现从服务器端的Laravel验证规则生成客户端的jQuery Validator规则,但可以扩展为任何服务器端和客户端框架的组合。
安装
-
将
npmweb/client-validation-generator
添加到composer.json
的要求中{ "require": { "npmweb/client-validation-generator": "^2.0" } }
-
使用
composer update
更新您的包。 -
如果您使用Laravel,在您的Laravel服务提供者列表中取消注释任何现有的HtmlServiceProvider,并添加此包
'providers' => array( ... // LaravelCollective\Html\HtmlServiceProvider::class, NpmWeb\ClientValidationGenerator\Laravel\HtmlServiceProvider::class, NpmWeb\ClientValidationGenerator\Laravel\ClientValidationServiceProvider::class, ),
-
如果您使用Laravel,将包的配置文件发布到您的应用
$ php artisan vendor:publish --provider="NpmWeb\ClientValidationGenerator\Laravel\ClientValidationServiceProvider"
使用方法
一旦设置好,如何使用它取决于您使用的模型类型
- 如果您使用Ardent,当您调用Form::model()或Form::close()(取决于设置)时,传递
validate="true"
,将输出带有您生成的客户端验证规则的<script>
标签。 - 如果您使用其他验证方法,调用Form::clientValidation()并传递验证规则数组,将输出带有您生成的客户端验证规则的
<script>
标签。
要配置如何工作,编辑配置文件app/config/client-validation.php
。它具有以下值
'driver'
:要使用哪个驱动程序。唯一内置的是'jquery'
'useRequireJs'
:如果应该通过require.js加载所需的JS库则为true;如果它们将通过您的应用程序代码的某种方式(如普通的<script>
标签)加载,则为false'packageName'
:使用require.js时,要加载的包的名称'useDocumentReady'
:验证设置JS代码是否应该在文档完全加载后运行,使用jQuery的document ready。如果为false,将立即运行。'codeAtEnd'
:加载验证的<script>
标签应放在<form>
标签的开始或结束位置。默认为开始位置。'functionName'
:要调用的函数的名称;允许调用扩展jQuery验证器的库'ruleMappings'
:指定如何将服务器端验证规则转换为客户端规则(下面有详细说明)
规则映射
在配置文件中,'ruleMappings'
是一个关联数组。键是服务器端验证规则名称,值指定如何生成客户端规则。
在最简单的情况下,如果值是字符串,则规则将从服务器端精确地转移到客户端。此字符串可以是键/服务器端相同的规则名称,也可以是不同的名称。
如果值是关联数组,可以设置几个键
-
'name'
:客户端规则的名称 -
'param'
:定义规则参数的函数。此函数接收服务器端参数,可以进行转换。例如,服务器端规则可能是“same”,参数为“otherField”,而客户端规则需要是“equalTo”,参数为“input[name=otherField]”。这可以通过以下方式实现:'param' => function( $param ) { return 'input[name=' . $param . ']'; },
-
'fieldOverride'
:允许你覆盖规则设置的字段。例如,你可能有一个电子邮件字段和一个电子邮件确认字段。在服务器端,规则可能存在于电子邮件字段上,但在客户端你希望规则存在于email_confirmation字段上。你可以通过以下方式实现:'fieldOverride' => function( $param, $field ) { return $field.'_confirmation'; },
许可证
此代码在MIT许可证下开源。更多信息,请参阅LICENSE文件。