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

use 
SymfonyComponentEventDispatcherEventSubscriberInterface;
use 
SymfonyComponentFormExtensionValidatorViolationMapperViolationMapperInterface;
use 
SymfonyComponentValidatorValidatorValidatorInterface;
use 
SymfonyComponentValidatorValidatorInterface as LegacyValidatorInterface;
use 
SymfonyComponentFormFormEvents;
use 
SymfonyComponentFormFormEvent;
use 
SymfonyComponentFormExtensionValidatorConstraintsForm;

/**
 * @author Bernhard Schussek <bschussek@gmail.com>
 */
class ValidationListener implements EventSubscriberInterface
{
    private 
$validator;

    private 
$violationMapper;

    
/**
     * {@inheritdoc}
     */
    
public static function getSubscribedEvents()
    {
        return array(
FormEvents::POST_SUBMIT => 'validateForm');
    }

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

        
$this->validator $validator;
        
$this->violationMapper $violationMapper;
    }

    
/**
     * Validates the form and its domain object.
     *
     * @param FormEvent $event The event object
     */
    
public function validateForm(FormEvent $event)
    {
        
$form $event->getForm();

        if (
$form->isRoot()) {
            
// Validate the form in group "Default"
            
$violations $this->validator->validate($form);

            foreach (
$violations as $violation) {
                
// Allow the "invalid" constraint to be put onto
                // non-synchronized forms
                // ConstraintViolation::getConstraint() must not expect to provide a constraint as long as SymfonyComponentValidatorExecutionContext exists (before 3.0)
                
$allowNonSynchronized = (null === $violation->getConstraint() || $violation->getConstraint() instanceof Form) && Form::NOT_SYNCHRONIZED_ERROR === $violation->getCode();

                
$this->violationMapper->mapViolation($violation$form$allowNonSynchronized);
            }
        }
    }
}
Онлайн: 1
Реклама