atournayre / entity-validation
此包最新版本(1.1.1)没有提供许可证信息。
使用 Symfony 验证器进行实体验证
1.1.1
2023-02-13 08:12 UTC
Requires
- php: >=8.1
- doctrine/collections: ^1.6
- symfony/form: ^5.4
- symfony/validator: ^5.4
Requires (Dev)
- symfony/phpunit-bridge: ^6.2
This package is auto-updated.
Last update: 2024-08-31 00:32:24 UTC
README
此组件有助于实体验证,但也可用于 DTO...
安装
Composer
composer require atournayre/entity-validation
向类添加验证
实体 / DTO / ...
namespace App\Entity; use Atournayre\EntityValidation\ValidableEntityTrait; class YourEntity implements ValidableEntityInterface { // Your code use ValidableEntityTrait; }
约束
创建 YourEntityConstraint(名称很重要);它必须位于您的实体 / DTO ... 相同目录中,
约束验证器
创建 YourEntityConstraintValidator(名称很重要);它必须位于您的实体 / DTO ... 相同目录中,
示例
约束验证器
<?php namespace App\Entity\YourEntity; use Atournayre\EntityValidation\ConstraintViolationListCollectionBuilder; use Atournayre\EntityValidation\ConstraintValidator; use Atournayre\EntityValidation\ConstraintViolationListCollection; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\Constraints as Assert; class YourEntityConstraintValidator extends ConstraintValidator { /** * @throws \Exception */ public function __construct() { $this->throwExceptionIfConstraintClassDoNotExists(__CLASS__); } /** * @param YourEntity $value * @param Constraint|null $constraint * @return ConstraintViolationListCollection */ public function validate($value, Constraint $constraint = null): ConstraintViolationListCollection { $constraintViolationListCollectionBuilder = ConstraintViolationListCollectionBuilder::create(); if (!$value instanceof YourEntity) { return $constraintViolationListCollectionBuilder->build(); } return $constraintViolationListCollectionBuilder // Suppose YourEntity has method getEmail() ->add($value->getEmail(), new Assert\Email()) // You can also specify propertyPath to get error attached properly in the form //->add($value->getEmail(), new Assert\Email(), 'email') ->build(); } }
用法
独立
$entity = new YourEntity(); // To perform manual validation /** @var ConstraintViolationListCollection $constraintViolationListCollection */ $constraintViolationListCollection = $entity->validate(); // Check if entity has violations $hasViolations = $constraintViolationListCollection->count() != 0; // To get only messages $messages = $constraintViolationListCollection->getMessages(); // To get only invalid properties $invalidProperties = $constraintViolationListCollection->getPropertiesPaths(); // To get only invalid properties without brackets $invalidProperties = $constraintViolationListCollection->getPropertiesPaths(true);
Symfony 表单
// Before $form->isValid(), call the line below, it will add errors to form for invalid values EntityValidationHelper::form($form);
贡献
当然,开源是由每个人为更大的利益投入一点时间的力量所推动的。如果您想看到一个功能或添加一些您自己的快乐话语,太棒了!您可以提出请求——但是创建拉取请求是完成工作的更好方式。
无论如何,请放心提交问题或拉取请求:所有贡献和问题都受到热烈欢迎 :).