Esempio n. 1
0
 /**
  * Makes a form widget object with the supplied form field and widget configuration.
  * @param string $class Widget class name
  * @param mixed $fieldConfig A field name, an array of config or a FormField object.
  * @param array $widgetConfig An array of config.
  * @return \Backend\Classes\FormWidgetBase The widget object
  */
 public function makeFormWidget($class, $fieldConfig = [], $widgetConfig = [])
 {
     $controller = property_exists($this, 'controller') && $this->controller ? $this->controller : $this;
     if (!class_exists($class)) {
         throw new SystemException(Lang::get('backend::lang.widget.not_registered', ['name' => $class]));
     }
     if (is_string($fieldConfig)) {
         $fieldConfig = ['name' => $fieldConfig];
     }
     if (is_array($fieldConfig)) {
         $formField = new FormField(array_get($fieldConfig, 'name'), array_get($fieldConfig, 'label'));
         $formField->displayAs('widget', $fieldConfig);
     } else {
         $formField = $fieldConfig;
     }
     return new $class($controller, $formField, $widgetConfig);
 }
Esempio n. 2
0
 /**
  * {@inheritDoc}
  */
 public function init()
 {
     $config = $this->config;
     $fieldName = $this->fieldName;
     $label = $config->label;
     $field = new FormField($fieldName, $label);
     if (isset($config->ajax) == false || isset($config->ajax) == true && $config->ajax == false) {
         $field->options(function () use($field, $config) {
             $fieldOptions = isset($config->options) ? $config->options : null;
             $fieldOptions = $this->getOptionsFromModel($field, $fieldOptions);
             return $fieldOptions;
         });
     }
     $field->value = $this->getLoadValue();
     if (isset($config->multiple) == false) {
         $field->multiple = false;
     } else {
         $field->multiple = $config->multiple;
     }
     //dd($config);
     dd($field);
     $this->field = $field;
 }
Esempio n. 3
0
 /**
  * Creates a form field object from name and configuration.
  */
 protected function makeFormField($name, $config)
 {
     $label = isset($config['label']) ? $config['label'] : null;
     list($fieldName, $fieldContext) = $this->getFieldName($name);
     $field = new FormField($fieldName, $label);
     if ($fieldContext) {
         $field->context = $fieldContext;
     }
     $field->arrayName = $this->arrayName;
     $field->idPrefix = $this->getId();
     /*
      * Simple field type
      */
     if (is_string($config)) {
         if ($this->isFormWidget($config) !== false) {
             $field->displayAs('widget', ['widget' => $config]);
         } else {
             $field->displayAs($config);
         }
     } else {
         $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)]));
         }
         /*
          * Widget with configuration
          */
         if ($this->isFormWidget($fieldType) !== false) {
             $config['widget'] = $fieldType;
             $fieldType = 'widget';
         }
         $field->displayAs($fieldType, $config);
     }
     /*
      * Set field value
      */
     $field->value = $this->getFieldValue($field);
     /*
      * Check model if field is required
      */
     if (!$field->required && $this->model && method_exists($this->model, 'isAttributeRequired')) {
         $field->required = $this->model->isAttributeRequired($field->fieldName);
     }
     /*
      * Get field options from model
      */
     $optionModelTypes = ['dropdown', 'radio', 'checkboxlist', 'balloon-selector'];
     if (in_array($field->type, $optionModelTypes)) {
         /*
          * Defer the execution of option data collection
          */
         $field->options(function () use($field, $config) {
             $fieldOptions = isset($config['options']) ? $config['options'] : null;
             $fieldOptions = $this->getOptionsFromModel($field, $fieldOptions);
             return $fieldOptions;
         });
     }
     return $field;
 }
Esempio n. 4
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;
 }
Esempio n. 5
0
 /**
  * Creates a form field object from name and configuration.
  */
 protected function makeFormField($name, $config)
 {
     $label = isset($config['label']) ? $config['label'] : null;
     list($fieldName, $fieldContext) = $this->getFieldName($name);
     $field = new FormField($fieldName, $label);
     if ($fieldContext) {
         $field->context = $fieldContext;
     }
     $field->idPrefix = $this->getId();
     /*
      * Simple field type
      */
     if (is_string($config)) {
         $field->displayAs($config);
         /*
          * Defined field type
          */
     } else {
         $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)]));
         }
         $field->displayAs($fieldType, $config);
     }
     /*
      * Set field value
      */
     $field->value = $this->getFieldValue($field);
     /*
      * Get field options from model
      */
     $optionModelTypes = ['dropdown', 'radio', 'checkboxlist', 'balloon-selector'];
     if (in_array($field->type, $optionModelTypes)) {
         /*
          * Defer the execution of option data collection
          */
         $field->options(function () use($field, $config) {
             $fieldOptions = isset($config['options']) ? $config['options'] : null;
             $fieldOptions = $this->getOptionsFromModel($field, $fieldOptions);
             return $fieldOptions;
         });
     }
     return $field;
 }