-
Notifications
You must be signed in to change notification settings - Fork 2
/
Renderer.php
60 lines (59 loc) · 2.4 KB
/
Renderer.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
namespace KingPalm\B2B;
use Df\Framework\Form\Element as E;
use Magento\Framework\Data\Form\Element\AbstractElement as AE;
use Magento\Framework\Data\Form\Element\Renderer\RendererInterface as IRenderer;
/**
* 2019-05-30
* @final Unable to use the PHP «final» keyword here because of the M2 code generation.
* @see \Df\Framework\Form\Element\Renderer\Inline
* @used-by \KingPalm\B2B\Block\Registration::r()
*/
class Renderer implements IRenderer {
/**
* 2019-05-30
* @final Unable to use the PHP «final» keyword here because of the M2 code generation.
* @override
* @see \Magento\Framework\Data\Form\Element\Renderer\RendererInterface::render()
* @used-by @used-by \KingPalm\B2B\Block\Registration::e()
* @param AE|E $e
* @return string
*/
function render(AE $e) {
$labelAtRight = E::shouldLabelBeAtRight($e); /** @var bool $labelAtRight */
$innerA = [$this->label($e), $e->getElementHtml(), $e['after']]; /** @var string[] $innerA */
if ($labelAtRight) {
$innerA = array_reverse($innerA);
}
return df_tag('div',
df_cc_s(
/**
* 2015-12-11
* Класс .field для элементов внутри inline fieldset не добавляю намеренно:
* слишком уж много стилей ядро связывает с этим классом, и это чересчур ломает мою вёрстку.
* Но система добавляет это класс, когда поле находится не внутри inline fieldset.
* Мы же вместо .field опираемся на наш селектор .df-field,
* который мы добавляем как к инлайновым полям, так и к блочным:
* @see \Df\Backend\Block\Widget\Form\Renderer\Fieldset\Element::outerCssClasses()
* https://github.com/mage2pro/core/tree/489029cab0b8be03e4a79f0d33ce9afcdec6a76c/Backend/Block/Widget/Form/Renderer/Fieldset/Element.php#L189
*/
'df-field'
,E::getClassDfOnly($e)
,$e->getContainerClass() // 2015-11-23 Моё добавление.
)
,implode($innerA)
);
}
/**
* 2019-05-30
* @used-by render()
* @param AE|E $e
* @return string|null
*/
private function label(AE $e) {
$l = $e['label']; /** @var string|null $l */
return !$l ? null : df_tag('label', [
'class' => E::shouldLabelBeAtRight($e) ? 'addafter' : 'addbefore', 'for' => $e->getHtmlId()
], $l);
}
}