/** * 2015-11-19 * @override * @see \Magento\Framework\Data\Form\Element\Renderer\RendererInterface::render() * @param AE|\Df\Framework\Form\Element $element * @return string */ public function render(AE $element) { /** @var bool $labelAtRight */ $labelAtRight = E::shouldLabelBeAtRight($element); /** * 2015-12-11 * Класс .df-label-sibling означает: элемент рядом с label. * В данном случае это всегда непосредственно элемент управления, * а вот для блочных элементов это может быть div-оболочка вокруг элемента: * @see \Df\Backend\Block\Widget\Form\Renderer\Fieldset\Element::elementHtml() */ $element->addClass('df-label-sibling'); /** * 2015-12-28 * К сожалению, мы не можем назначать классы для label: * @uses \Magento\Framework\Data\Form\Element\AbstractElement::getLabelHtml() * https://github.com/magento/magento2/blob/2.0.0/lib/internal/Magento/Framework/Data/Form/Element/AbstractElement.php#L425 * Потому ситуацию, когда label расположена справа от элемента, * помечаем классом для элемента. * При этом сама label справа может быть выбрана селектором .df-label-sibling ~ label */ if ($labelAtRight) { $element->addClass('df-label-at-right'); } /** @var string $innerA */ $innerA = [$element->getLabelHtml(), $element->getElementHtml()]; if ($labelAtRight) { $innerA = array_reverse($innerA); } return df_tag('span', ['class' => df_cc_s('df-element-inline', 'df-field', E::getClassDfOnly($element), $element->getContainerClass())], implode($innerA)); }
/** * 2016-01-06 * @param AE $e * @param string $suffix [optional] * @return array(string => string) */ function df_fe_uid(AE $e, $suffix = null) { return ['data-ui-id' => E::uidSt($e, $suffix)]; }
/** * 2015-12-13 * Отличия от модифицируемого метода * @see \Magento\Framework\Data\Form\Element\AbstractElement::getLabelHtml(): * 1) Добавляем свои классы для Font Awesome. * 2) При использовании Font Awesome не добавляем исходную подпись * (значением которой является класс Font Awesome) * и выводим, по сути, пустые теги <label><span></span></label>. * 3) Добавляем атрибут title. * 2015-12-28 * 4) Добавляем класс, соответствующий типу элемента. * * Пример использования Font Awesome: https://github.com/mage2pro/core/tree/7cb37ab2c4d728bc20d29ca3c7c643e551f6eb0a/Framework/Data/Form/Element/Font.php#L40 * * @see \Df\Framework\Form\Element\Font::onFormInitialized() * @see \Magento\Framework\Data\Form\Element\AbstractElement::getLabelHtml() * @param Sb|E $sb * @param \Closure $proceed * @param string|null $idSuffix * @return string */ public function aroundGetLabelHtml(Sb $sb, \Closure $proceed, $idSuffix = '') { /** @var string|null|Phrase $label */ $label = $sb->getLabel(); /** @var string $result */ if (is_null($label)) { $result = ''; } else { $label = (string) $label; /** * 2015-12-25 * @see \Magento\Framework\Data\Form\Element\Multiline::getLabelHtml() * имеет другое значение по-умолчанию параметра $idSuffix: * public function getLabelHtml($suffix = 0) * https://github.com/magento/magento2/blob/2.0.0/lib/internal/Magento/Framework/Data/Form/Element/Multiline.php#L59 */ if ('' === $idSuffix && $sb instanceof Multiline) { $idSuffix = 0; } /** @var bool $isFontAwesome */ $isFontAwesome = df_starts_with($label, 'fa-'); /** @var string[] $classA */ $classA = ['label', 'admin__field-label', 'df-element-' . $sb->getType()]; if ($isFontAwesome) { $classA[] = 'fa'; $classA[] = $label; $label = ''; } /** @var array(string => string) $params */ $params = ['class' => df_cc_s($classA), 'for' => $sb->getHtmlId() . $idSuffix, 'data-ui-id' => E::uidSt($sb, 'label')]; /** @var string $title */ $title = (string) $sb->getTitle(); if ($title !== $label) { $params['title'] = $title; } $result = df_tag('label', $params, df_tag('span', [], $label)) . "\n"; } return $result; }
/** * 2015-11-22 * @used-by \Df\Backend\Block\Widget\Form\Renderer\Fieldset\Element::_render() * @return bool */ private function shouldLabelBeAtRight() { if (!isset($this->{__METHOD__})) { $this->{__METHOD__} = E::shouldLabelBeAtRight($this->e()); } return $this->{__METHOD__}; }
/** * 2016-05-30 * @override * @see \Df\Framework\Form\Element::getComment() * @used-by \Magento\Config\Block\System\Config\Form\Field::_renderValue() * https://github.com/magento/magento2/blob/a5fa3af3/app/code/Magento/Config/Block/System/Config/Form/Field.php#L82-L84 if ((string)$element->getComment()) { $html .= '<p class="note"><span>' . $element->getComment() . '</span></p>'; } */ public function getComment() { return $this->thirdPartyLocalhost() ? null : parent::getComment(); }