如何在 Symfony 中全局设置验证约束选项?
How to set option for validation constraint in Symfony globally?
我需要更改 format for DateTime 验证约束,但我想在全局范围内对整个应用程序进行更改,而不是像这样复制粘贴:
dateFrom:
- DateTime
format: Y-m-d\TH:i:s.vP
dateTo:
- DateTime
format: Y-m-d\TH:i:s.vP
(我在我的应用程序中使用 yaml 配置)
是否有任何选项可以在 Symfony 5 应用程序中全局执行此操作,使用 DI 参数或其他方式?
我在官方文档中没有找到任何关于它的信息。
您可以创建一个扩展 Symfony\Component\Validator\Constraints\DateTime
的自定义约束并在那里设置格式。
// src/Validator/Constraints/MyDateTime.php
namespace App\Validator\Constraints;
use Symfony\Component\Validator\Constraints\DateTime as BaseDateTime;
class MyDateTime extends BaseDateTime
{
public $format = 'Y-m-d\TH:i:s.vP';
public function validatedBy()
{
// use the same validator without this symfony will look for 'App\Validator\Constraints\MyDateTimeValidator'
//return static::class.'Validator';
return parent::class.'Validator';
}
}
然后您只需在需要的地方使用自定义约束。
YAML:
# config/validator/validation.yaml
App\Entity\Author:
properties:
createdAt:
- NotBlank: ~
- App\Validator\Constraints\MyDateTime: ~
注释:
// src/Entity/Author.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
use App\Validator\Constraints as MyAssert;
class Author
{
/**
* @Assert\NotBlank
* @MyAssert\MyDateTime
* @var string A "Y-m-d\TH:i:s.vP" formatted value
*/
protected $createdAt;
}
因此您的配置将如下所示:
dateFrom:
- App\Validator\Constraints\MyDateTime: ~
https://symfony.com/doc/current/validation/custom_constraint.html
我需要更改 format for DateTime 验证约束,但我想在全局范围内对整个应用程序进行更改,而不是像这样复制粘贴:
dateFrom:
- DateTime
format: Y-m-d\TH:i:s.vP
dateTo:
- DateTime
format: Y-m-d\TH:i:s.vP
(我在我的应用程序中使用 yaml 配置)
是否有任何选项可以在 Symfony 5 应用程序中全局执行此操作,使用 DI 参数或其他方式?
我在官方文档中没有找到任何关于它的信息。
您可以创建一个扩展 Symfony\Component\Validator\Constraints\DateTime
的自定义约束并在那里设置格式。
// src/Validator/Constraints/MyDateTime.php
namespace App\Validator\Constraints;
use Symfony\Component\Validator\Constraints\DateTime as BaseDateTime;
class MyDateTime extends BaseDateTime
{
public $format = 'Y-m-d\TH:i:s.vP';
public function validatedBy()
{
// use the same validator without this symfony will look for 'App\Validator\Constraints\MyDateTimeValidator'
//return static::class.'Validator';
return parent::class.'Validator';
}
}
然后您只需在需要的地方使用自定义约束。
YAML:
# config/validator/validation.yaml
App\Entity\Author:
properties:
createdAt:
- NotBlank: ~
- App\Validator\Constraints\MyDateTime: ~
注释:
// src/Entity/Author.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
use App\Validator\Constraints as MyAssert;
class Author
{
/**
* @Assert\NotBlank
* @MyAssert\MyDateTime
* @var string A "Y-m-d\TH:i:s.vP" formatted value
*/
protected $createdAt;
}
因此您的配置将如下所示:
dateFrom:
- App\Validator\Constraints\MyDateTime: ~
https://symfony.com/doc/current/validation/custom_constraint.html