/** * generate all tooltips * * @return \Umc\Base\Model\Tooltip[] */ public function getTooltips() { if (!$this->_scopeConfig->isSetFlag(AbstractTab::XML_TOOLTIPS_ENABLED_PATH)) { return []; } if (is_null($this->tooltips)) { $this->tooltips = []; foreach ($this->formConfig->getConfig('form') as $entityId => $entitySettings) { if (isset($entitySettings['fieldset'])) { foreach ($entitySettings['fieldset'] as $fieldsetSettings) { if (isset($fieldsetSettings['field'])) { foreach ($fieldsetSettings['field'] as $fieldId => $fieldSettings) { if (isset($fieldSettings['tooltip']) && isset($fieldSettings['label'])) { /** @var \Umc\Base\Model\Tooltip $tooltip */ $tooltip = $this->factory->create(); $tooltip->setTitle(__($fieldSettings['label'])); $tooltip->setMessage(__($fieldSettings['tooltip'])); $tooltip->setId($entityId . '_' . $fieldId); $this->tooltips[] = $tooltip; } } } } } } } return $this->tooltips; }
/** * render the form * * @param \Magento\Framework\Data\Form\Element\AbstractElement $element * @return string */ public function render(AbstractElement $element) { $html = $this->_getHeaderHtml($element); $formName = $this->getFormName(); $config = $this->formConfig->getConfig('form/' . $formName, true, []); foreach ($config['fieldset'] as $fieldset) { foreach ($fieldset['field'] as $id => $field) { if ($this->formConfig->getBoolValue($field, 'system') && $field['type'] != 'hidden') { $html .= $this->getFieldHtml($element, $id, $field); } } } $html .= $this->_getFooterHtml($element); return $html; }
/** * get form fields * * @return array */ public function getFields() { $entities = [$this->moduleInstance->getEntityCode() => __('MODULE'), $this->settingsInstance->getEntityCode() => __('SETTINGS'), $this->entityInstance->getEntityCode() => __('ENTITY'), $this->attributeInstance->getEntityCode() => __('ATTRIBUTE')]; $data = []; foreach ($entities as $entityCode => $entityLabel) { $data[] = ['__colspan' => $entityLabel]; $config = $this->formConfig->getConfig('form/' . $entityCode, true, []); foreach ($config['fieldset'] as $fieldset) { $data[] = ['__colspan' => $fieldset['label']]; foreach ($fieldset['field'] as $field) { if ($field['type'] != 'hidden') { $data[] = ['field' => $field['label'], 'type' => $field['type'], 'description' => isset($field['tooltip']) ? $field['tooltip'] : '']; } } } } return $data; }
/** * validate model * * @return array */ public function validate() { $configData = $this->formConfig->getConfig('form/' . $this->getEntityCode(), true, []); $errors = []; if (isset($configData['fieldset'])) { foreach ($configData['fieldset'] as $settings) { foreach ($settings['field'] as $fieldId => $fieldSettings) { if ($this->shouldValidateField($fieldId, $fieldSettings)) { $fieldErrors = $this->validateField($fieldId, $fieldSettings); if (count($fieldErrors)) { $key = $this->getValidationErrorKey($fieldId); if (!isset($errors[$key])) { $errors[$key] = []; } $errors[$key] = array_merge($errors[$key], $fieldErrors); } } } } } return $errors; }
/** * prepare the form * * @return $this */ protected function _prepareForm() { $configData = $this->formConfig->getConfig('form/' . $this->model->getEntityCode(), true, []); $this->buildForm($configData); return $this; }