Jak mogę dodać mały tekst pod polem w Magento 2 przy użyciu komponentów interfejsu użytkownika.
Używając Magento\Framework\Data\Form
mogę to zrobić:
/** @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')
]
);
Powyższy kod spowodowałby to (zauważ tekst pod polem).
Jak mogę osiągnąć to samo za pomocą elementów interfejsu użytkownika?
Mam formę zdefiniowaną w ten sposób:
<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>
Próbowałem dodać, <item name="note" xsi:type="string" translate="true">Some note here</item>
ale zgadnij co?
magento-2.0
forms
uicomponent
Marius
źródło
źródło
translate="true"
tylko po to, aby tłumaczący skrypt kolekcjonera fraz mógł to również odebrać.<item name="notice" xsi:type="string" translate="true"><![CDATA[Some note <a href="https://google.com">here</a>]]></item>
Miałem naprawdę denerwujący czas, zastanawiając się, jak uzyskać HTML do renderowania w obiekcie zawiadomienia. Wymyśliłem dwa rozwiązania. Wiem, że to może być komentarz, ale pomyślałem, że inni ludzie również zainteresowaliby się tą funkcjonalnością.
oryginalny element można znaleźć pod adresem
/vendor/magento/module-ui/view/base/web/templates/form/field.html
Skopiuj to do modułu ze ścieżką
view/base/web/template/form/field-html-notice.html
lub czymś podobnym ( pamiętaj,templates
że zmieniany katalogtemplate
jest zamierzony i wymagany dla niestandardowych plików szablonów )Teraz w nowym pliku field-html-notice.html możesz zmodyfikować plik html, aby załadować go
$data.notice
za pomocą html i całkowicie pominąć zakres. (oczywiście jeśli chcesz przetłumaczyć kod HTML, musisz dostosować to rozwiązanie, aby uzyskać pewne obejście)Rozwiązaniem byłoby wziąć ten szablon i zmodyfikować
wyglądać mniej więcej tak:
Gdy tylko poświęciłem trochę czasu, zdałem sobie sprawę, że zespół Magento dogodnie dał nam możliwość dodania,
additionalInfo
że jest renderowany jako HTML.Dużo trudniejszą opcją byłoby renderowanie powiadomienia div w
additionalInfo
sekcji. Coś w styluWięc tak, proste, prawda? Dobrze. Idę teraz spać.
(pamiętaj, że walidator xml ulegnie awarii, jeśli użyjesz rzeczywistych
<
lub>
znaków w swoich dodatkowych informacjach, stąd<
i>
Uwaga: okazuje się, że możesz po prostu owinąć swój
<![CDATA[<p>cool paragraph man</p>]]
plik HTML w Thanks @Mariusźródło
<![CDATA[<p>cool paragraph man</p>]]
Nie działa pod,message
ale działa zadditionalInfo
mag.2.2.2Obecne wersje 2.2.8 i 2.3.1 Magento 2 domyślnie obsługują HTML DodatkoweInfo w polu Formularza interfejsu użytkownika.
Nie trzeba modyfikować szablonu field.html.
źródło