nimaebrazi / laravel-validator
此包已被废弃且不再维护。未建议替代包。
dev-master
2018-11-09 17:27 UTC
Requires
- php: >=7.0
Requires (Dev)
- orchestra/testbench: ^3.8@dev
- phpunit/phpunit: ^7.5@dev
This package is not auto-updated.
Last update: 2023-12-07 17:14:49 UTC
README
安装
composer require nimaebrazi/laravel-validator
如果使用laravel 5.4.*
及更早版本,需要在config/app.php
中添加服务提供者
'providers' => [ ... \nimaebrazi\LaravelValidator\LaravelValidatorServiceProvider::class, ... ]
发布配置
php artisan vendor:publish
您可以在配置中更改消息路径文件:laravel_validator.php
在messages.php
文件中添加此键:resources/lang/YOUR_LANGUAGE/messages.php
"validation_failed" => "messages.validation_failed"
此包抛出名为ValidationException
的异常。为了处理Laravel异常,在Handler.php
文件中添加以下代码,并为您自己的项目进行自定义。
use nimaebrazi\LaravelValidator\src\Validator\ValidationException; use Symfony\Component\HttpFoundation\Response; ... /** * Render an exception into an HTTP response. * * @param \Illuminate\Http\Request $request * @param \Exception $exception * @return \Illuminate\Http\Response */ public function render($request, Exception $exception) { if($exception instanceof ValidationException){ return response()->json([ 'status' => Response::HTTP_UNPROCESSABLE_ENTITY, 'description' => $exception->getMessage(), 'data' => [ 'errors' => $exception->getErrors() ] ], 422); } return parent::render($request, $exception); }
用法
步骤 1
创建一个验证类
\nimaebrazi\LaravelValidator\Validator\AbstractValidator
public function messages(): array
& public function customAttributes(): array
方法为可选。
use nimaebrazi\LaravelValidator\Validator\AbstractValidator; class UpdateUserProfile extends AbstractValidator { /** * Rules of validation. * * @return array */ public function rules(): array { return [ 'name' => 'required|min:3', ]; } // OPTIONAL /** * Messages of rules. * * @return array */ public function messages(): array { return [ // ]; } // OPTIONAL /** * Custom attributes of rules. * * @return array */ public function customAttributes(): array { return [ // ]; } }
更多关于
步骤 2:将类注入到控制器中
class ApiUserController extends Controller { /** * @param Request $request * @param UpdateUserProfile $validator * @throws \Exception * @throws \nimaebrazi\LaravelValidator\src\Validator\ValidationException */ public function update(Request $request, UpdateUserProfile $validator) { $validator->make($request->all())->validate(); }
注意
- 当您调用
validate
函数时,包会抛出默认异常。如果您想以其他方式处理,
class ApiUserController extends Controller { /** * @param Request $request * @param UpdateUserProfile $validator * @throws \Exception * @throws \nimaebrazi\LaravelValidator\src\Validator\ValidationException */ public function update(Request $request, UpdateUserProfile $validator) { $validator->make($request->all()); if($validator->fails()){ // your codes } if($validator->passes()){ // your codes } }
RuleManager助手
当使用验证器规则时,您是否看到了文档?我认为当忘记规则和参数时,这太难了。您可以使用此包的RuleManager。
use nimaebrazi\LaravelValidator\Validator\AbstractValidator; class UpdateUserProfile extends AbstractValidator { /** * Rules of validation. * * @return array */ public function rules(): array { return [ 'name' => $this->ruleManager()->required()->min('3')->make(), 'age' => $this->ruleManager()->required()->numeric()->max('3')->min('0')->make(), 'other' => $this->ruleManager()->required()->string()->make() ]; } }