Вход Регистрация
Файл: symfony-2.7/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php
Строк: 149
<?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 SymfonyComponentFormExtensionValidatorType;

use 
SymfonyComponentFormFormBuilderInterface;
use 
SymfonyComponentFormExtensionValidatorViolationMapperViolationMapper;
use 
SymfonyComponentFormExtensionValidatorEventListenerValidationListener;
use 
SymfonyComponentValidatorValidatorValidatorInterface;
use 
SymfonyComponentValidatorValidatorInterface as LegacyValidatorInterface;
use 
SymfonyComponentOptionsResolverOptions;
use 
SymfonyComponentOptionsResolverOptionsResolver;

/**
 * @author Bernhard Schussek <bschussek@gmail.com>
 */
class FormTypeValidatorExtension extends BaseValidatorExtension
{
    
/**
     * @var ValidatorInterface
     */
    
private $validator;

    
/**
     * @var ViolationMapper
     */
    
private $violationMapper;

    
/**
     * @param ValidatorInterface|LegacyValidatorInterface $validator
     */
    
public function __construct($validator)
    {
        if (!
$validator instanceof ValidatorInterface && !$validator instanceof LegacyValidatorInterface) {
            throw new 
InvalidArgumentException('Validator must be instance of SymfonyComponentValidatorValidatorValidatorInterface or SymfonyComponentValidatorValidatorInterface');
        }

        
$this->validator $validator;
        
$this->violationMapper = new ViolationMapper();
    }

    
/**
     * {@inheritdoc}
     */
    
public function buildForm(FormBuilderInterface $builder, array $options)
    {
        
$builder->addEventSubscriber(new ValidationListener($this->validator$this->violationMapper));
    }

    
/**
     * {@inheritdoc}
     */
    
public function configureOptions(OptionsResolver $resolver)
    {
        
parent::configureOptions($resolver);

        
// Constraint should always be converted to an array
        
$constraintsNormalizer = function (Options $options$constraints) {
            return 
is_object($constraints) ? array($constraints) : (array) $constraints;
        };

        
$resolver->setDefaults(array(
            
'error_mapping' => array(),
            
'constraints' => array(),
            
'cascade_validation' => false,
            
'invalid_message' => 'This value is not valid.',
            
'invalid_message_parameters' => array(),
            
'allow_extra_fields' => false,
            
'extra_fields_message' => 'This form should not contain extra fields.',
        ));

        
$resolver->setNormalizers(array(
            
'constraints' => $constraintsNormalizer,
        ));
    }

    
/**
     * {@inheritdoc}
     */
    
public function getExtendedType()
    {
        return 
'form';
    }
}
Онлайн: 1
Реклама