数字革命 / symfony-request-validation
为symfony提供自动请求验证
v2.4.0
2023-12-07 12:42 UTC
Requires
- php: >=8.1
- digitalrevolution/symfony-validation-shorthand: ^1.2
- symfony/config: ^6.2 || ^7.0
- symfony/dependency-injection: ^6.2 || ^7.0
- symfony/http-foundation: ^6.2 || ^7.0
- symfony/http-kernel: ^6.2 || ^7.0
- symfony/validator: ^6.2 || ^7.0
Requires (Dev)
- digitalrevolution/phpunit-file-coverage-inspection: ^v2.0.0
- phpmd/phpmd: ^2.14
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^1.10
- phpstan/phpstan-phpunit: ^1.3
- phpstan/phpstan-strict-rules: ^1.5
- phpstan/phpstan-symfony: ^1.3
- phpunit/phpunit: ^9.6
- roave/security-advisories: dev-latest
- squizlabs/php_codesniffer: ^3.6
README
Symfony Request Validation
Symfony的请求验证组件。在不使用整个Symfony表单的情况下简化请求属性的验证。
安装
通过以下方式将库作为依赖项包含到您的项目中:
composer require "digitalrevolution/symfony-request-validation"
更新 /config/bundles.php
return [ ... DigitalRevolution\SymfonyRequestValidation\Bundle\RequestValidationBundle::class => ['all' => true], ];
使用
- 创建一个名为
ExampleRequest
的类,该类继承自AbstractValidatedRequest
类。 - 配置您自己的
ValidationRules
。有关规则的更多信息,请参阅验证简写库。 - 确保您的
ExampleRequest
类已在您的 Symfony 项目中注册为 服务。
use DigitalRevolution\SymfonyRequestValidation\AbstractValidatedRequest; use DigitalRevolution\SymfonyRequestValidation\ValidationRules; class ExampleRequest extends AbstractValidatedRequest { protected function getValidationRules(): ValidationRules { return new ValidationRules([ 'request' => [ 'productId' => 'required|int|min:0', 'productName' => 'required|string|between:50,255' ] ]); } public function getProductId(): int { return $this->request->request->getInt('productId'); } public function getProductName(): string { return $this->request->request->getString('productName'); } }
剩下的就是在您的 Controller
中使用 ExampleRequest
类,并且它只会在请求验证通过时被调用。
class ExampleController { /** * @Route("/", name="my_example") */ public function index(ExampleRequest $request): Response { return ...; } }
无效请求处理
默认情况下,如果请求无效,则会抛出 InvalidRequestException
。如果您希望有不同的行为,则覆盖 handleViolations
方法。
class ExampleRequest extends AbstractValidatedRequest { ... protected function handleViolations(ConstraintViolationListInterface $violationList): void { $renderer = new ViolationListRenderer($violationList); $this->logger->error($renderer->render()); } }
注意:如果在 handleViolations
中没有抛出异常,您将始终在您的 Controller
中收到请求。使用 Request->isValid()
验证请求是否有效。
关于我们
在123inkt(Digital Revolution B.V.的一部分),每天有超过50名开发专业人士致力于改进我们的内部ERP和我们的几家商店。您想加入我们吗?我们正在寻找开发者。