/**
  * Assemble icon setting.
  *
  * @param Validation      $validation The validation object.
  * @param ValidationModel $setting    The validation model.
  * @param string          $icon       The icon.
  *
  * @return void
  */
 private function assembleIcon(Validation $validation, $setting, $icon)
 {
     $property = 'icon_' . $icon;
     if ($setting->{$property}) {
         $validation->setIcon($icon, $setting->{$property});
     }
 }
 /**
  * Create the field validation object.
  *
  * @param Validation      $validation The form validation.
  * @param \FormFieldModel $model      The field model.
  *
  * @return Field
  */
 private function createField(Validation $validation, $model)
 {
     $field = $validation->addField($this->getFieldIdentifier($model));
     if ($model->fv_enabled === 'disabled') {
         $field->setEnabled(false);
     }
     if ($model->fv_enabled !== 'custom') {
         return $field;
     }
     $field->setAutoFocus($model->fv_autofocus)->setIcon($model->fv_icon)->setVerbose($model->fv_verbose);
     foreach (array('message', 'selector') as $option) {
         $this->assembleOption($field, $model, $option, true);
     }
     if ($model->fv_advanced) {
         $this->assembleOption($field, $model, 'row', true);
         if (is_numeric($model->fv_threshold)) {
             $field->setThreshold($model->fv_threshold);
         }
         if ($model->fv_err) {
             if ($model->fv_err === 'selector') {
                 $field->setErr($model->fv_err_selector);
             } else {
                 $field->setErr($model->fv_err);
             }
         }
     }
     return $field;
 }
 /**
  * Assemble the form validation.
  *
  * @param \Form             $form          The form.
  * @param \FormFieldModel[] $fields        The form fields.
  * @param ValidationModel   $settings      The validation model.
  * @param string|null       $defaultLocale The default locale.
  *
  * @return Validation
  */
 public function assemble($form, $fields, $settings, $defaultLocale = null)
 {
     $cssId = deserialize($form->cssID, true);
     $formId = $cssId[0] ?: 'f' . $form->id;
     $validation = new Validation($formId);
     $validation->setLocale($defaultLocale);
     $event = new BuildValidationSettingEvent($validation, $form, $settings);
     $this->eventDispatcher->dispatch($event::NAME, $event);
     foreach ($fields as $model) {
         $event = new BuildValidationFieldEvent($validation, $form, $model);
         $this->eventDispatcher->dispatch($event::NAME, $event);
     }
     return $validation;
 }
 /**
  * Assemble the phone validator.
  *
  * @param Validation      $validation The form validation.
  * @param Field           $field      The validation field.
  * @param \FormFieldModel $model      The field model.
  *
  * @return void
  */
 private function assemblePhoneValidator(Validation $validation, Field $field, \FormFieldModel $model)
 {
     if (in_array($model->type, $this->rgxpWidgets) && $model->rgxp === 'phone') {
         $field->addValidator('phone', array('country' => Format::convertLocaleToCountryCode($validation->getLocale())));
     }
 }