Вход Регистрация
Файл: symfony-2.7/src/Symfony/Component/Validator/Violation/ConstraintViolationBuilder.php
Строк: 213
<?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 SymfonyComponentValidatorViolation;

use 
SymfonyComponentTranslationTranslatorInterface;
use 
SymfonyComponentValidatorConstraint;
use 
SymfonyComponentValidatorConstraintViolation;
use 
SymfonyComponentValidatorConstraintViolationList;
use 
SymfonyComponentValidatorUtilPropertyPath;

/**
 * Default implementation of {@link ConstraintViolationBuilderInterface}.
 *
 * @since  2.5
 * @author Bernhard Schussek <bschussek@gmail.com>
 *
 * @internal You should not instantiate or use this class. Code against
 *           {@link ConstraintViolationBuilderInterface} instead.
 */
class ConstraintViolationBuilder implements ConstraintViolationBuilderInterface
{
    
/**
     * @var ConstraintViolationList
     */
    
private $violations;

    
/**
     * @var string
     */
    
private $message;

    
/**
     * @var array
     */
    
private $parameters;

    
/**
     * @var mixed
     */
    
private $root;

    
/**
     * @var mixed
     */
    
private $invalidValue;

    
/**
     * @var string
     */
    
private $propertyPath;

    
/**
     * @var TranslatorInterface
     */
    
private $translator;

    
/**
     * @var string|null
     */
    
private $translationDomain;

    
/**
     * @var int|null
     */
    
private $plural;

    
/**
     * @var Constraint
     */
    
private $constraint;

    
/**
     * @var mixed
     */
    
private $code;

    
/**
     * @var mixed
     */
    
private $cause;

    public function 
__construct(ConstraintViolationList $violationsConstraint $constraint$message, array $parameters$root$propertyPath$invalidValueTranslatorInterface $translator$translationDomain null)
    {
        
$this->violations $violations;
        
$this->message $message;
        
$this->parameters $parameters;
        
$this->root $root;
        
$this->propertyPath $propertyPath;
        
$this->invalidValue $invalidValue;
        
$this->translator $translator;
        
$this->translationDomain $translationDomain;
        
$this->constraint $constraint;
    }

    
/**
     * {@inheritdoc}
     */
    
public function atPath($path)
    {
        
$this->propertyPath PropertyPath::append($this->propertyPath$path);

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setParameter($key$value)
    {
        
$this->parameters[$key] = $value;

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setParameters(array $parameters)
    {
        
$this->parameters $parameters;

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setTranslationDomain($translationDomain)
    {
        
$this->translationDomain $translationDomain;

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setInvalidValue($invalidValue)
    {
        
$this->invalidValue $invalidValue;

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setPlural($number)
    {
        
$this->plural $number;

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setCode($code)
    {
        
$this->code $code;

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setCause($cause)
    {
        
$this->cause $cause;

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function addViolation()
    {
        if (
null === $this->plural) {
            
$translatedMessage $this->translator->trans(
                
$this->message,
                
$this->parameters,
                
$this->translationDomain
            
);
        } else {
            try {
                
$translatedMessage $this->translator->transChoice(
                    
$this->message,
                    
$this->plural,
                    
$this->parameters,
                    
$this->translationDomain#
                
);
            } catch (
InvalidArgumentException $e) {
                
$translatedMessage $this->translator->trans(
                    
$this->message,
                    
$this->parameters,
                    
$this->translationDomain
                
);
            }
        }

        
$this->violations->add(new ConstraintViolation(
            
$translatedMessage,
            
$this->message,
            
$this->parameters,
            
$this->root,
            
$this->propertyPath,
            
$this->invalidValue,
            
$this->plural,
            
$this->code,
            
$this->constraint,
            
$this->cause
        
));
    }
}
Онлайн: 1
Реклама