Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 /*
|
Chris@0
|
4 * This file is part of the Symfony package.
|
Chris@0
|
5 *
|
Chris@0
|
6 * (c) Fabien Potencier <fabien@symfony.com>
|
Chris@0
|
7 *
|
Chris@0
|
8 * For the full copyright and license information, please view the LICENSE
|
Chris@0
|
9 * file that was distributed with this source code.
|
Chris@0
|
10 */
|
Chris@0
|
11
|
Chris@0
|
12 namespace Symfony\Component\Validator\Violation;
|
Chris@0
|
13
|
Chris@0
|
14 use Symfony\Component\Translation\TranslatorInterface;
|
Chris@0
|
15 use Symfony\Component\Validator\Constraint;
|
Chris@0
|
16 use Symfony\Component\Validator\ConstraintViolation;
|
Chris@0
|
17 use Symfony\Component\Validator\ConstraintViolationList;
|
Chris@0
|
18 use Symfony\Component\Validator\Util\PropertyPath;
|
Chris@0
|
19
|
Chris@0
|
20 /**
|
Chris@0
|
21 * Default implementation of {@link ConstraintViolationBuilderInterface}.
|
Chris@0
|
22 *
|
Chris@0
|
23 * @author Bernhard Schussek <bschussek@gmail.com>
|
Chris@0
|
24 *
|
Chris@14
|
25 * @internal since version 2.5. Code against ConstraintViolationBuilderInterface instead.
|
Chris@0
|
26 */
|
Chris@0
|
27 class ConstraintViolationBuilder implements ConstraintViolationBuilderInterface
|
Chris@0
|
28 {
|
Chris@0
|
29 private $violations;
|
Chris@0
|
30 private $message;
|
Chris@0
|
31 private $parameters;
|
Chris@0
|
32 private $root;
|
Chris@0
|
33 private $invalidValue;
|
Chris@0
|
34 private $propertyPath;
|
Chris@0
|
35 private $translator;
|
Chris@0
|
36 private $translationDomain;
|
Chris@0
|
37 private $plural;
|
Chris@0
|
38 private $constraint;
|
Chris@0
|
39 private $code;
|
Chris@0
|
40
|
Chris@0
|
41 /**
|
Chris@0
|
42 * @var mixed
|
Chris@0
|
43 */
|
Chris@0
|
44 private $cause;
|
Chris@0
|
45
|
Chris@0
|
46 public function __construct(ConstraintViolationList $violations, Constraint $constraint, $message, array $parameters, $root, $propertyPath, $invalidValue, TranslatorInterface $translator, $translationDomain = null)
|
Chris@0
|
47 {
|
Chris@0
|
48 $this->violations = $violations;
|
Chris@0
|
49 $this->message = $message;
|
Chris@0
|
50 $this->parameters = $parameters;
|
Chris@0
|
51 $this->root = $root;
|
Chris@0
|
52 $this->propertyPath = $propertyPath;
|
Chris@0
|
53 $this->invalidValue = $invalidValue;
|
Chris@0
|
54 $this->translator = $translator;
|
Chris@0
|
55 $this->translationDomain = $translationDomain;
|
Chris@0
|
56 $this->constraint = $constraint;
|
Chris@0
|
57 }
|
Chris@0
|
58
|
Chris@0
|
59 /**
|
Chris@0
|
60 * {@inheritdoc}
|
Chris@0
|
61 */
|
Chris@0
|
62 public function atPath($path)
|
Chris@0
|
63 {
|
Chris@0
|
64 $this->propertyPath = PropertyPath::append($this->propertyPath, $path);
|
Chris@0
|
65
|
Chris@0
|
66 return $this;
|
Chris@0
|
67 }
|
Chris@0
|
68
|
Chris@0
|
69 /**
|
Chris@0
|
70 * {@inheritdoc}
|
Chris@0
|
71 */
|
Chris@0
|
72 public function setParameter($key, $value)
|
Chris@0
|
73 {
|
Chris@0
|
74 $this->parameters[$key] = $value;
|
Chris@0
|
75
|
Chris@0
|
76 return $this;
|
Chris@0
|
77 }
|
Chris@0
|
78
|
Chris@0
|
79 /**
|
Chris@0
|
80 * {@inheritdoc}
|
Chris@0
|
81 */
|
Chris@0
|
82 public function setParameters(array $parameters)
|
Chris@0
|
83 {
|
Chris@0
|
84 $this->parameters = $parameters;
|
Chris@0
|
85
|
Chris@0
|
86 return $this;
|
Chris@0
|
87 }
|
Chris@0
|
88
|
Chris@0
|
89 /**
|
Chris@0
|
90 * {@inheritdoc}
|
Chris@0
|
91 */
|
Chris@0
|
92 public function setTranslationDomain($translationDomain)
|
Chris@0
|
93 {
|
Chris@0
|
94 $this->translationDomain = $translationDomain;
|
Chris@0
|
95
|
Chris@0
|
96 return $this;
|
Chris@0
|
97 }
|
Chris@0
|
98
|
Chris@0
|
99 /**
|
Chris@0
|
100 * {@inheritdoc}
|
Chris@0
|
101 */
|
Chris@0
|
102 public function setInvalidValue($invalidValue)
|
Chris@0
|
103 {
|
Chris@0
|
104 $this->invalidValue = $invalidValue;
|
Chris@0
|
105
|
Chris@0
|
106 return $this;
|
Chris@0
|
107 }
|
Chris@0
|
108
|
Chris@0
|
109 /**
|
Chris@0
|
110 * {@inheritdoc}
|
Chris@0
|
111 */
|
Chris@0
|
112 public function setPlural($number)
|
Chris@0
|
113 {
|
Chris@0
|
114 $this->plural = $number;
|
Chris@0
|
115
|
Chris@0
|
116 return $this;
|
Chris@0
|
117 }
|
Chris@0
|
118
|
Chris@0
|
119 /**
|
Chris@0
|
120 * {@inheritdoc}
|
Chris@0
|
121 */
|
Chris@0
|
122 public function setCode($code)
|
Chris@0
|
123 {
|
Chris@0
|
124 $this->code = $code;
|
Chris@0
|
125
|
Chris@0
|
126 return $this;
|
Chris@0
|
127 }
|
Chris@0
|
128
|
Chris@0
|
129 /**
|
Chris@0
|
130 * {@inheritdoc}
|
Chris@0
|
131 */
|
Chris@0
|
132 public function setCause($cause)
|
Chris@0
|
133 {
|
Chris@0
|
134 $this->cause = $cause;
|
Chris@0
|
135
|
Chris@0
|
136 return $this;
|
Chris@0
|
137 }
|
Chris@0
|
138
|
Chris@0
|
139 /**
|
Chris@0
|
140 * {@inheritdoc}
|
Chris@0
|
141 */
|
Chris@0
|
142 public function addViolation()
|
Chris@0
|
143 {
|
Chris@0
|
144 if (null === $this->plural) {
|
Chris@0
|
145 $translatedMessage = $this->translator->trans(
|
Chris@0
|
146 $this->message,
|
Chris@0
|
147 $this->parameters,
|
Chris@0
|
148 $this->translationDomain
|
Chris@0
|
149 );
|
Chris@0
|
150 } else {
|
Chris@0
|
151 try {
|
Chris@0
|
152 $translatedMessage = $this->translator->transChoice(
|
Chris@0
|
153 $this->message,
|
Chris@0
|
154 $this->plural,
|
Chris@0
|
155 $this->parameters,
|
Chris@0
|
156 $this->translationDomain
|
Chris@0
|
157 );
|
Chris@0
|
158 } catch (\InvalidArgumentException $e) {
|
Chris@0
|
159 $translatedMessage = $this->translator->trans(
|
Chris@0
|
160 $this->message,
|
Chris@0
|
161 $this->parameters,
|
Chris@0
|
162 $this->translationDomain
|
Chris@0
|
163 );
|
Chris@0
|
164 }
|
Chris@0
|
165 }
|
Chris@0
|
166
|
Chris@0
|
167 $this->violations->add(new ConstraintViolation(
|
Chris@0
|
168 $translatedMessage,
|
Chris@0
|
169 $this->message,
|
Chris@0
|
170 $this->parameters,
|
Chris@0
|
171 $this->root,
|
Chris@0
|
172 $this->propertyPath,
|
Chris@0
|
173 $this->invalidValue,
|
Chris@0
|
174 $this->plural,
|
Chris@0
|
175 $this->code,
|
Chris@0
|
176 $this->constraint,
|
Chris@0
|
177 $this->cause
|
Chris@0
|
178 ));
|
Chris@0
|
179 }
|
Chris@0
|
180 }
|