Example #1
0
 /**
  * Fetch a fields properties.
  *
  * @param  \Helmut\Forms\Field  $field
  * @return string
  */
 public function fieldProperties($field)
 {
     $properties = ['id' => $field->id, 'form_id' => $this->id, 'type' => $field->type, 'name' => $field->name, 'label' => $field->label, 'required' => $field->isRequired(), 'valid' => $field->isValid(), 'invalid' => $field->isInvalid(), 'errors' => [], 'keys' => []];
     $properties = array_merge($properties, $field->properties());
     foreach ($field->keys() as $key) {
         $properties['keys'][] = $key;
     }
     if ($field->isInvalid()) {
         foreach ($field->errors() as $error => $parameters) {
             if ($error == 'userDefined') {
                 foreach ($parameters as $message) {
                     $properties['errors'][] = ['error' => $message];
                 }
             } else {
                 $parameters['field'] = str_replace('_', ' ', $field->name);
                 $message = $this->translate($error, $field);
                 foreach ($parameters as $key => $value) {
                     if (is_object($value) && method_exists($value, '__toString')) {
                         $value = (string) $value;
                     }
                     if (is_array($value)) {
                         $value = implode(', ', $value);
                     }
                     $message = str_replace('[' . $key . ']', $value, $message);
                 }
                 $properties['errors'][] = ['error' => $message];
             }
         }
     }
     return $properties;
 }