Esempio n. 1
0
 /**
  * Creates a form field object from name and configuration.
  */
 protected function makeFormField($name, $config)
 {
     $label = isset($config['label']) ? $config['label'] : null;
     $field = new FormField($name, $label);
     $field->arrayName = $this->arrayName;
     $field->idPrefix = $this->getId();
     /*
      * Simple widget field, only widget type is supplied
      */
     if (is_string($config) && $this->isFormWidget($config) !== false) {
         $field->displayAs('widget', ['widget' => $config]);
         return $field;
     } elseif (is_string($config)) {
         $field->displayAs($config);
         return $field;
     }
     /*
      * Defined field type
      */
     $fieldType = isset($config['type']) ? $config['type'] : null;
     if (!is_string($fieldType) && !is_null($fieldType)) {
         throw new ApplicationException(Lang::get('backend::lang.field.invalid_type', ['type' => gettype($fieldType)]));
     }
     /*
      * Process basic options
      */
     if (isset($config['span'])) {
         $field->span($config['span']);
     }
     if (isset($config['context'])) {
         $field->context = $config['context'];
     }
     if (isset($config['size'])) {
         $field->size($config['size']);
     }
     if (isset($config['tab'])) {
         $field->tab($config['tab']);
     }
     if (isset($config['commentAbove'])) {
         $field->comment($config['commentAbove'], 'above');
     }
     if (isset($config['comment'])) {
         $field->comment($config['comment']);
     }
     if (isset($config['placeholder'])) {
         $field->placeholder = $config['placeholder'];
     }
     if (isset($config['default'])) {
         $field->defaults = $config['default'];
     }
     if (isset($config['cssClass'])) {
         $field->cssClass = $config['cssClass'];
     }
     if (isset($config['attributes'])) {
         $field->attributes = $config['attributes'];
     }
     if (isset($config['path'])) {
         $field->path = $config['path'];
     }
     if (array_key_exists('required', $config)) {
         $field->required = $config['required'];
     }
     if (array_key_exists('disabled', $config)) {
         $field->disabled = $config['disabled'];
     }
     if (array_key_exists('stretch', $config)) {
         $field->stretch = $config['stretch'];
     }
     /*
      * Set field value
      */
     $field->value = $this->getFieldValue($field);
     /*
      * Widget with options
      */
     if ($this->isFormWidget($fieldType) !== false) {
         $fieldOptions = isset($config['options']) ? $config['options'] : [];
         $fieldOptions['widget'] = $fieldType;
         $field->displayAs('widget', $fieldOptions);
     } elseif (strlen($fieldType)) {
         $fieldOptions = isset($config['options']) ? $config['options'] : null;
         $studlyField = studly_case(strtolower($fieldType));
         if (method_exists($this, 'eval' . $studlyField . 'Options')) {
             $fieldOptions = $this->{'eval' . $studlyField . 'Options'}($field, $fieldOptions);
         }
         $field->displayAs($fieldType, $fieldOptions);
     }
     return $field;
 }