revati / laravel-validation
此包的最新版本(dev-master)没有提供许可信息。
Laravel 验证扩展,用于错误时抛出 ValidationException
dev-master
2014-02-02 21:36 UTC
Requires
- php: >=5.3.0
- illuminate/support: 4.1.*
This package is not auto-updated.
Last update: 2024-09-28 15:23:45 UTC
README
以两种方式提供验证支持。
- 抛出 ValidationException 和可配置的响应
- 带有便捷功能的 BaseValidator 抽象类
可能性
- 无需担心验证失败(ValidationException)时会发生什么。
- 可以动态地为验证规则分配修饰符
// In ResourceValidator that extends Revati\Validation\BaseValidator $rules = [ 'title' => 'required' 'endDate' => 'after:[afterDate]' ]; $resourceValidator->addModifier('date', 'afterDate', Input::get('startDate')); // So [afterDate] will be replaced with 3th parameter
安装
首先通过 Composer 安装此包。编辑您的项目 composer.json
文件以需要 revati/validation
。
"require": {
"laravel/framework": "4.1.*",
"revati/validation": "dev-master"
}
接下来,在终端中更新 Composer
composer update
此操作完成后,下一步是添加服务提供者。打开 app/config/app.php
,并向 providers 数组添加一个新项目。
// 'Illuminate\Validation\ValidationServiceProvider',
'Revati\Validation\ValidationServiceProvider'
这就完成了!您已经准备好开始使用了。
BaseValidator
- 为每个资源创建单独的 Validator 文件(应扩展
Revati\Validation\BaseValidator
) - 设置应用于资源的所有规则
获取特定规则
getRules
方法接受一个参数(数组),包含从全局 $rules 中提取的所有规则列表。
// Will get only title rules $validator->getRules(array('title')); // Will get title rules and overwrite description rules $validator->getRules(array('title', 'description' => 'min:200'));
动态规则修饰符
在 URL 中指定修饰符钩子,如下所示:[modifier]
。
// Change hook value // Modifier should bee passed without square brackets $validator->addModifier('field', 'min', 20); // As field name can be passed `*` to search in all field rules. $validator->addModifier('*', 'max', 100); // Modifiers can be be grouped $validator->addModifier('field', 'min|max', 10);
ValidationException
注意:默认情况下,异常抛出是启用的。因此,如果您不需要它,可以通过包配置禁用它。
php artisan config:publish revati/validation
无论您在哪里需要验证某些内容
// ... // Validate $input against $rules like usual. // No need to catch response because if errors will occur, exception // will be thrown and necessary response returned. Validator::make($input, $rules); // If got to this point validation passed $user = User::create($input); // For validation only (without throwing exception) $validator = Validator::sotfMake($input, $rules); // To disable or enable exception throwing at runtime use fallowing methods: Validation::disable(); Validation::enable(); // To change response at runtime use fallowing method Validation::setResponse($responseClosure, $ajaxResponseClosure); // Change only one response Validation::setResponse($responseClosure); Validation::setResponse(null, $ajaxResponseClosure); // ...
如果发生错误,将返回以下响应
// For "regular" request return \Redirect::back() ->withInput() ->withErrors($e->getErrors()); // For ajax request return \Response::json(array( 'success' => false, 'errors' => $e->getErrors()->toJson() ), 400); // $e stands for ValidationException witch (for now) only has one method // to return errors -> getErrors.
自定义
这些响应在包配置文件中定义为闭包,因此只需发布包配置,就可以修改在哪种情况下应用程序应该做什么。
php artisan config:publish revati/validation
待办事项
这可能超出了此包的范围,但计划添加一个简单的 JavaScript 文件来自动化表单提交和错误响应中的错误显示。