Как я могу добавить небольшой текст в поле в Magento 2, используя компоненты пользовательского интерфейса.
Используя Magento\Framework\Data\Form
я мог сделать это:
/** @var \Magento\Framework\Data\Form $form */
$form = $this->formFactory->create();
$fieldset = $form->addFieldset(
'base_fieldset',
[
'legend' => __('Some legend here'),
'class' => 'fieldset-wide'
]
);
$fieldset->addField(
'name',
'text',
[
'name' => 'name',
'label' => __('Name'),
'title' => __('Name'),
'note' => __('Some note here')
]
);
Код выше будет производить это (обратите внимание на текст под полем).
Как я могу добиться того же, используя UI-компоненты формы?
У меня есть форма, определенная так:
<field name="name">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="dataType" xsi:type="string">text</item>
<item name="label" xsi:type="string" translate="true">Name</item>
<item name="formElement" xsi:type="string">input</item>
<item name="source" xsi:type="string">[entity]</item>
<item name="sortOrder" xsi:type="number">10</item>
<item name="dataScope" xsi:type="string">name</item>
<item name="validation" xsi:type="array">
<item name="required-entry" xsi:type="boolean">true</item>
</item>
</item>
</argument>
</field>
Я пытался добавить, <item name="note" xsi:type="string" translate="true">Some note here</item>
но, угадайте, что?
magento-2.0
forms
uicomponent
Мариус
источник
источник
translate="true"
только для того, чтобы сделать так, чтобы сценарий для переводчика фраз был переведен.<item name="notice" xsi:type="string" translate="true"><![CDATA[Some note <a href="https://google.com">here</a>]]></item>
У меня было действительно раздражающее время, когда я выяснял, как заставить HTML отображаться в объекте уведомлений. Я нашел два решения. Я знаю, что это может быть комментарий, но я подумал, что другие люди будут заинтересованы в этой функциональности.
оригинальный элемент можно найти на
/vendor/magento/module-ui/view/base/web/templates/form/field.html
Скопируйте это в свой модуль с путем
view/base/web/template/form/field-html-notice.html
или чем-то похожим ( обратите внимание,templates
что изменяемый каталогtemplate
является намеренным и обязательным для пользовательских файлов шаблонов )Теперь в вашем новом файле field-html-note.html вы можете изменить html-файл, чтобы загрузить html-файл
$data.notice
и пропустить весь диапазон. (конечно, если вы хотите перевести html, вам нужно настроить это решение, чтобы найти обходной путь)Решение было бы взять этот шаблон и изменить
выглядеть примерно так:
Как только я нашел время для этого, я понял, что команда Magento удобно дала нам возможность добавлять
additionalInfo
то, что отображается как html.Гораздо более сложным вариантом было бы сделать уведомление Div в
additionalInfo
разделе. Нечто подобноеТак что да, просто верно? Что ж. Я пойду спать сейчас.
(обратите внимание, что валидатор xml сломается, если вы используете фактические
<
или>
символы в вашей дополнительной информации, следовательно,<
и>
Примечание: оказывается, вы можете просто обернуть свой HTML в
<![CDATA[<p>cool paragraph man</p>]]
Спасибо @Mariusисточник
<![CDATA[<p>cool paragraph man</p>]]
Не работает под,message
но работает сadditionalInfo
mag.2.2.2Текущая версия Magento 2 2.2.8 и 2.3.1 поддерживает html AdditionalInfo по умолчанию в поле UI Form.
Нет необходимости изменять шаблон field.html.
источник