public function getErrorMessages() { $allMessages = $this->validator->messages()->getMessages(); if (!$this->reportIlluminateErrors) { $availableErrorMessages = $this->form->bootErrorMessages(); $plainMessages = []; foreach ($allMessages as $fieldName => $message) { $message = isset($availableErrorMessages[$fieldName]) ? $availableErrorMessages[$fieldName] : "{attribute} is not valid"; $message = str_replace('{:attribute}', '{' . $fieldName . '}', $message); // array of 1 element for compatibility with Laravel's MessageBag $plainMessages[$fieldName] = [$message]; } $allMessages = $plainMessages; } foreach ($allMessages as $fieldName => &$messages) { foreach ($messages as &$message) { $searchField = str_replace('_', ' ', $fieldName); $searchField = '{' . $searchField . '}'; $element = $this->form->el($fieldName); /* @var $element Element */ $replace = [$searchField => $element->label, '{value}' => htmlspecialchars($element->val(), ENT_NOQUOTES, 'UTF-8')]; // for choice elements add option to output the text value of an option if ($element instanceof Choice) { $replace['{valueText}'] = $element->valueText(); } $message = str_replace(array_keys($replace), array_values($replace), $message); } $messages = implode(', ', $messages); } return $allMessages; }
public function bootValidatorRules(Form $form) { $rules = []; foreach ($form->getElements() as $el) { $rules[$el->name] = 'required'; } return $rules; }
/** * @param Form $form * @return bool */ public function validateForm(Form $form) { $errors = []; $elements = $form->getElements(); foreach ($elements as $element) { /* @var $element Element */ if (isset($this->rules[$element->name])) { $respect = $this->rules[$element->name]; if (!$respect->validate($element->val())) { $errors[$element->name] = true; } } } if ($errors) { $allErrorMessages = $form->bootErrorMessages(); foreach ($errors as $field => &$error) { $label = $elements[$field]->label ?: $field; $error = isset($allErrorMessages[$field]) ? $allErrorMessages[$field] : "{$label} is not valid"; } } $this->errorMessages = $errors; return empty($errors); }
/** * Override this function to make a suitable validator * @param Form $form * @param array $data * @param array $rules * @param array $messages * @param array $customAttributes * @return \Illuminate\Validation\Validator */ public function makeValidator(Form $form, array $data, array $rules, array $messages = array(), array $customAttributes = array()) { $factory = $this->getValidationFactory(); if (!$messages) { $messages = $form->bootErrorMessages(); } return $factory->make($data, $rules, $messages, $customAttributes); }