2 namespace TYPO3\CMS\Form\Domain\Builder;
34 $validationBuilder = \TYPO3\CMS\Form\Utility\FormUtility::getObjectManager()->get(ValidationBuilder::class);
36 return $validationBuilder;
110 public function buildRules(array $rawArgument = array())
112 $userConfiguredFormTyposcript = $this->configuration->getTypoScript();
113 $rulesTyposcript = isset($userConfiguredFormTyposcript[
'rules.']) ? $userConfiguredFormTyposcript[
'rules.'] : null;
114 $this->rules[$this->configuration->getPrefix()] = array();
115 if (is_array($rulesTyposcript)) {
117 foreach ($keys as $key) {
118 $ruleName = $rulesTyposcript[$key];
119 $validatorClassName = $this->typoScriptRepository->getRegisteredClassName($ruleName,
'registeredValidators');
120 if ($validatorClassName === null) {
121 throw new \RuntimeException(
'Class "' . $validatorClassName .
'" not registered via typoscript.');
125 && strpos($key,
'.') ===
false
127 $ruleArguments = $rulesTyposcript[$key .
'.'];
128 $fieldName = $this->formUtility->sanitizeNameAttribute($ruleArguments[
'element']);
130 $validatorOptions = $ruleArguments;
131 $validatorOptions[
'errorMessage'] = array($ruleArguments[
'error.'], $ruleArguments[
'error']);
132 $keysToRemove = array_flip(array(
140 $validatorOptions = array_diff_key($validatorOptions, $keysToRemove);
145 $validator = $this->objectManager->get($validatorClassName, $validatorOptions);
147 if ($validator instanceof AbstractValidator) {
148 $validator->setRawArgument($rawArgument);
149 $validator->setFormUtility($this->formUtility);
150 $mandatoryMessage = $validator->renderMessage($ruleArguments[
'message.'], $ruleArguments[
'message']);
152 $this->rules[$this->configuration->getPrefix()][$fieldName][] = array(
153 'validator' => $validator,
154 'validatorName' => $validatorClassName,
155 'validatorOptions' => $validatorOptions,
156 'mandatoryMessage' => $mandatoryMessage
159 throw new \RuntimeException(
'Class "' . $validatorClassName .
'" could not be loaded.');
174 $this->rules = $rules[$this->configuration->getPrefix()];
184 return $this->rules[$this->configuration->getPrefix()];
196 $this->rules[$this->configuration->getPrefix()][$key] = $rule;
207 if (isset($this->rules[$this->configuration->getPrefix()][$key])) {
208 return $this->rules[$this->configuration->getPrefix()][$key];
221 unset($this->rules[$this->configuration->getPrefix()][$key]);
232 $mandatoryMessages = array();
235 foreach (
$rules as $rule) {
236 $mandatoryMessages[] = $rule[
'mandatoryMessage'];
239 return $mandatoryMessages;