Necesito cambiar el formato para la restricción de validación de fecha y hora, pero quiero hacerlo globalmente para que toda la aplicación no copie y pegue así:
dateFrom: - DateTime format: Ymd\TH:i:s.vP dateTo: - DateTime format: Ymd\TH:i:s.vP(Uso la configuración de yaml en mi aplicación)
¿Hay alguna opción para hacerlo globalmente en la aplicación Symfony 5, usando parámetros DI o de alguna otra manera?
No encontré nada al respecto en la documentación oficial.
Puedes crear una restricción personalizada que Symfony\Component\Validator\Constraints\DateTime y establecer el formato allí.
// src/Validator/Constraints/MyDateTime.php namespace App\Validator\Constraints; use Symfony\Component\Validator\Constraints\DateTime as BaseDateTime; class MyDateTime extends BaseDateTime { public $format = 'Ymd\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'; } }Luego, solo usa la restricción personalizada donde sea necesario.
# 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 "Ymd\TH:i:s.vP" formatted value */ protected $createdAt; }Entonces su configuración se vería así:
dateFrom: - App\Validator\Constraints\MyDateTime: ~https://symfony.com/doc/current/validation/custom_constraint.html