/** * 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); }
/** * {@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; }
/** * 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; }
/** * 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; }
/** * 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; }