[FrameworkBundle] Move Validator configuration to PHP
This commit is contained in:
parent
813d220aa1
commit
46de8900f0
@ -364,7 +364,7 @@ class FrameworkExtension extends Extension
|
|||||||
}
|
}
|
||||||
|
|
||||||
$propertyInfoEnabled = $this->isConfigEnabled($container, $config['property_info']);
|
$propertyInfoEnabled = $this->isConfigEnabled($container, $config['property_info']);
|
||||||
$this->registerValidationConfiguration($config['validation'], $container, $loader, $propertyInfoEnabled);
|
$this->registerValidationConfiguration($config['validation'], $container, $phpLoader, $propertyInfoEnabled);
|
||||||
$this->registerEsiConfiguration($config['esi'], $container, $loader);
|
$this->registerEsiConfiguration($config['esi'], $container, $loader);
|
||||||
$this->registerSsiConfiguration($config['ssi'], $container, $phpLoader);
|
$this->registerSsiConfiguration($config['ssi'], $container, $phpLoader);
|
||||||
$this->registerFragmentsConfiguration($config['fragments'], $container, $phpLoader);
|
$this->registerFragmentsConfiguration($config['fragments'], $container, $phpLoader);
|
||||||
@ -586,7 +586,7 @@ class FrameworkExtension extends Extension
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($this->validatorConfigEnabled) {
|
if ($this->validatorConfigEnabled) {
|
||||||
$loader->load('validator_debug.xml');
|
$phpLoader->load('validator_debug.php');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->translationConfigEnabled) {
|
if ($this->translationConfigEnabled) {
|
||||||
@ -1195,7 +1195,7 @@ class FrameworkExtension extends Extension
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function registerValidationConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader, bool $propertyInfoEnabled)
|
private function registerValidationConfiguration(array $config, ContainerBuilder $container, PhpFileLoader $loader, bool $propertyInfoEnabled)
|
||||||
{
|
{
|
||||||
if (!$this->validatorConfigEnabled = $this->isConfigEnabled($container, $config)) {
|
if (!$this->validatorConfigEnabled = $this->isConfigEnabled($container, $config)) {
|
||||||
return;
|
return;
|
||||||
@ -1209,7 +1209,7 @@ class FrameworkExtension extends Extension
|
|||||||
$config['email_validation_mode'] = 'loose';
|
$config['email_validation_mode'] = 'loose';
|
||||||
}
|
}
|
||||||
|
|
||||||
$loader->load('validator.xml');
|
$loader->load('validator.php');
|
||||||
|
|
||||||
$validatorBuilder = $container->getDefinition('validator.builder');
|
$validatorBuilder = $container->getDefinition('validator.builder');
|
||||||
|
|
||||||
|
@ -0,0 +1,98 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of the Symfony package.
|
||||||
|
*
|
||||||
|
* (c) Fabien Potencier <fabien@symfony.com>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
|
||||||
|
|
||||||
|
use Symfony\Bundle\FrameworkBundle\CacheWarmer\ValidatorCacheWarmer;
|
||||||
|
use Symfony\Component\Cache\Adapter\PhpArrayAdapter;
|
||||||
|
use Symfony\Component\Validator\Constraints\EmailValidator;
|
||||||
|
use Symfony\Component\Validator\Constraints\ExpressionValidator;
|
||||||
|
use Symfony\Component\Validator\Constraints\NotCompromisedPasswordValidator;
|
||||||
|
use Symfony\Component\Validator\ContainerConstraintValidatorFactory;
|
||||||
|
use Symfony\Component\Validator\Mapping\Loader\PropertyInfoLoader;
|
||||||
|
use Symfony\Component\Validator\Validation;
|
||||||
|
use Symfony\Component\Validator\Validator\ValidatorInterface;
|
||||||
|
use Symfony\Component\Validator\ValidatorBuilder;
|
||||||
|
|
||||||
|
return static function (ContainerConfigurator $container) {
|
||||||
|
$container->parameters()
|
||||||
|
->set('validator.mapping.cache.file', param('kernel.cache_dir').'/validation.php');
|
||||||
|
|
||||||
|
$container->services()
|
||||||
|
->set('validator', ValidatorInterface::class)
|
||||||
|
->public()
|
||||||
|
->factory([service('validator.builder'), 'getValidator'])
|
||||||
|
->alias(ValidatorInterface::class, 'validator')
|
||||||
|
|
||||||
|
->set('validator.builder', ValidatorBuilder::class)
|
||||||
|
->factory([Validation::class, 'createValidatorBuilder'])
|
||||||
|
->call('setConstraintValidatorFactory', [
|
||||||
|
service('validator.validator_factory'),
|
||||||
|
])
|
||||||
|
->call('setTranslator', [
|
||||||
|
service('translator')->ignoreOnInvalid(),
|
||||||
|
])
|
||||||
|
->call('setTranslationDomain', [
|
||||||
|
param('validator.translation_domain'),
|
||||||
|
])
|
||||||
|
->alias('validator.mapping.class_metadata_factory', 'validator')
|
||||||
|
|
||||||
|
->set('validator.mapping.cache_warmer', ValidatorCacheWarmer::class)
|
||||||
|
->args([
|
||||||
|
service('validator.builder'),
|
||||||
|
param('validator.mapping.cache.file'),
|
||||||
|
])
|
||||||
|
->tag('kernel.cache_warmer')
|
||||||
|
|
||||||
|
->set('validator.mapping.cache.adapter', PhpArrayAdapter::class)
|
||||||
|
->factory([PhpArrayAdapter::class, 'create'])
|
||||||
|
->args([
|
||||||
|
param('validator.mapping.cache.file'),
|
||||||
|
service('cache.validator'),
|
||||||
|
])
|
||||||
|
|
||||||
|
->set('validator.validator_factory', ContainerConstraintValidatorFactory::class)
|
||||||
|
->args([
|
||||||
|
abstract_arg('Constraint validators locator'),
|
||||||
|
])
|
||||||
|
|
||||||
|
->set('validator.expression', ExpressionValidator::class)
|
||||||
|
->tag('validator.constraint_validator', [
|
||||||
|
'alias' => 'validator.expression',
|
||||||
|
])
|
||||||
|
|
||||||
|
->set('validator.email', EmailValidator::class)
|
||||||
|
->args([
|
||||||
|
abstract_arg('Default mode'),
|
||||||
|
])
|
||||||
|
->tag('validator.constraint_validator', [
|
||||||
|
'alias' => EmailValidator::class,
|
||||||
|
])
|
||||||
|
|
||||||
|
->set('validator.not_compromised_password', NotCompromisedPasswordValidator::class)
|
||||||
|
->args([
|
||||||
|
service('http_client')->nullOnInvalid(),
|
||||||
|
param('kernel.charset'),
|
||||||
|
false,
|
||||||
|
])
|
||||||
|
->tag('validator.constraint_validator', [
|
||||||
|
'alias' => NotCompromisedPasswordValidator::class,
|
||||||
|
])
|
||||||
|
|
||||||
|
->set('validator.property_info_loader', PropertyInfoLoader::class)
|
||||||
|
->args([
|
||||||
|
service('property_info'),
|
||||||
|
service('property_info'),
|
||||||
|
service('property_info'),
|
||||||
|
])
|
||||||
|
->tag('validator.auto_mapper')
|
||||||
|
;
|
||||||
|
};
|
@ -1,74 +0,0 @@
|
|||||||
<?xml version="1.0" ?>
|
|
||||||
|
|
||||||
<container xmlns="http://symfony.com/schema/dic/services"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://symfony.com/schema/dic/services https://symfony.com/schema/dic/services/services-1.0.xsd">
|
|
||||||
|
|
||||||
<parameters>
|
|
||||||
<parameter key="validator.mapping.cache.file">%kernel.cache_dir%/validation.php</parameter>
|
|
||||||
</parameters>
|
|
||||||
|
|
||||||
<services>
|
|
||||||
<defaults public="false" />
|
|
||||||
|
|
||||||
<service id="validator" class="Symfony\Component\Validator\Validator\ValidatorInterface" public="true">
|
|
||||||
<factory service="validator.builder" method="getValidator" />
|
|
||||||
</service>
|
|
||||||
<service id="Symfony\Component\Validator\Validator\ValidatorInterface" alias="validator" />
|
|
||||||
|
|
||||||
<service id="validator.builder" class="Symfony\Component\Validator\ValidatorBuilder">
|
|
||||||
<factory class="Symfony\Component\Validator\Validation" method="createValidatorBuilder" />
|
|
||||||
<call method="setConstraintValidatorFactory">
|
|
||||||
<argument type="service" id="validator.validator_factory" />
|
|
||||||
</call>
|
|
||||||
<call method="setTranslator">
|
|
||||||
<argument type="service" id="translator" on-invalid="ignore" />
|
|
||||||
</call>
|
|
||||||
<call method="setTranslationDomain">
|
|
||||||
<argument>%validator.translation_domain%</argument>
|
|
||||||
</call>
|
|
||||||
</service>
|
|
||||||
|
|
||||||
<service id="validator.mapping.class_metadata_factory" alias="validator" />
|
|
||||||
|
|
||||||
<service id="validator.mapping.cache_warmer" class="Symfony\Bundle\FrameworkBundle\CacheWarmer\ValidatorCacheWarmer">
|
|
||||||
<argument type="service" id="validator.builder" />
|
|
||||||
<argument>%validator.mapping.cache.file%</argument>
|
|
||||||
<tag name="kernel.cache_warmer" />
|
|
||||||
</service>
|
|
||||||
|
|
||||||
<service id="validator.mapping.cache.adapter" class="Symfony\Component\Cache\Adapter\PhpArrayAdapter">
|
|
||||||
<factory class="Symfony\Component\Cache\Adapter\PhpArrayAdapter" method="create" />
|
|
||||||
<argument>%validator.mapping.cache.file%</argument>
|
|
||||||
<argument type="service" id="cache.validator" />
|
|
||||||
</service>
|
|
||||||
|
|
||||||
<service id="validator.validator_factory" class="Symfony\Component\Validator\ContainerConstraintValidatorFactory">
|
|
||||||
<argument /> <!-- Constraint validators locator -->
|
|
||||||
</service>
|
|
||||||
|
|
||||||
<service id="validator.expression" class="Symfony\Component\Validator\Constraints\ExpressionValidator">
|
|
||||||
<tag name="validator.constraint_validator" alias="validator.expression" />
|
|
||||||
</service>
|
|
||||||
|
|
||||||
<service id="validator.email" class="Symfony\Component\Validator\Constraints\EmailValidator">
|
|
||||||
<argument></argument>
|
|
||||||
<tag name="validator.constraint_validator" alias="Symfony\Component\Validator\Constraints\EmailValidator" />
|
|
||||||
</service>
|
|
||||||
|
|
||||||
<service id="validator.not_compromised_password" class="Symfony\Component\Validator\Constraints\NotCompromisedPasswordValidator">
|
|
||||||
<argument type="service" id="http_client" on-invalid="null" />
|
|
||||||
<argument>%kernel.charset%</argument>
|
|
||||||
<argument>false</argument>
|
|
||||||
<tag name="validator.constraint_validator" alias="Symfony\Component\Validator\Constraints\NotCompromisedPasswordValidator" />
|
|
||||||
</service>
|
|
||||||
|
|
||||||
<service id="validator.property_info_loader" class="Symfony\Component\Validator\Mapping\Loader\PropertyInfoLoader">
|
|
||||||
<argument type="service" id="property_info" />
|
|
||||||
<argument type="service" id="property_info" />
|
|
||||||
<argument type="service" id="property_info" />
|
|
||||||
|
|
||||||
<tag name="validator.auto_mapper" />
|
|
||||||
</service>
|
|
||||||
</services>
|
|
||||||
</container>
|
|
@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of the Symfony package.
|
||||||
|
*
|
||||||
|
* (c) Fabien Potencier <fabien@symfony.com>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
|
||||||
|
|
||||||
|
use Symfony\Component\Validator\DataCollector\ValidatorDataCollector;
|
||||||
|
use Symfony\Component\Validator\Validator\TraceableValidator;
|
||||||
|
|
||||||
|
return static function (ContainerConfigurator $container) {
|
||||||
|
$container->services()
|
||||||
|
->set('debug.validator', TraceableValidator::class)
|
||||||
|
->decorate('validator', null, 255)
|
||||||
|
->args([
|
||||||
|
service('debug.validator.inner'),
|
||||||
|
])
|
||||||
|
->tag('kernel.reset', [
|
||||||
|
'method' => 'reset',
|
||||||
|
])
|
||||||
|
|
||||||
|
->set('data_collector.validator', ValidatorDataCollector::class)
|
||||||
|
->args([
|
||||||
|
service('debug.validator'),
|
||||||
|
])
|
||||||
|
->tag('data_collector', [
|
||||||
|
'template' => '@WebProfiler/Collector/validator.html.twig',
|
||||||
|
'id' => 'validator',
|
||||||
|
'priority' => 320,
|
||||||
|
])
|
||||||
|
;
|
||||||
|
};
|
@ -1,21 +0,0 @@
|
|||||||
<?xml version="1.0" ?>
|
|
||||||
|
|
||||||
<container xmlns="http://symfony.com/schema/dic/services"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://symfony.com/schema/dic/services https://symfony.com/schema/dic/services/services-1.0.xsd">
|
|
||||||
|
|
||||||
<services>
|
|
||||||
<defaults public="false" />
|
|
||||||
|
|
||||||
<service id="debug.validator" decorates="validator" decoration-priority="255" class="Symfony\Component\Validator\Validator\TraceableValidator">
|
|
||||||
<argument type="service" id="debug.validator.inner" />
|
|
||||||
<tag name="kernel.reset" method="reset" />
|
|
||||||
</service>
|
|
||||||
|
|
||||||
<!-- DataCollector -->
|
|
||||||
<service id="data_collector.validator" class="Symfony\Component\Validator\DataCollector\ValidatorDataCollector">
|
|
||||||
<argument type="service" id="debug.validator"/>
|
|
||||||
<tag name="data_collector" template="@WebProfiler/Collector/validator.html.twig" id="validator" priority="320" />
|
|
||||||
</service>
|
|
||||||
</services>
|
|
||||||
</container>
|
|
Reference in New Issue
Block a user