¿Cómo puedo agregar un pequeño texto debajo de un campo en Magento 2 usando componentes ui?
Usando Magento\Framework\Data\Formpodría hacer esto:
/** @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')
]
);
El código anterior produciría esto (observe el texto debajo del campo).
¿Cómo puedo lograr lo mismo usando form ui-components?
Tengo la forma definida así:
<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>
Intenté agregar <item name="note" xsi:type="string" translate="true">Some note here</item>pero, ¿adivina qué?
magento-2.0
forms
uicomponent
Marius
fuente
fuente


translate="true"solo para hacer que el script traductor de frases traductor recoja esto también.<item name="notice" xsi:type="string" translate="true"><![CDATA[Some note <a href="https://google.com">here</a>]]></item>Tuve un momento realmente molesto descubriendo cómo obtener html para representar en un objeto de notificación. Ha habido dos soluciones que he descubierto. Sé que esto podría ser un comentario, pero supuse que otras personas también estarían interesadas en esta funcionalidad.
el elemento original se puede encontrar en
/vendor/magento/module-ui/view/base/web/templates/form/field.htmlCopie eso en su módulo con una ruta
view/base/web/template/form/field-html-notice.htmlo algo similar ( tenga en cuenta que eltemplatesdirectorio que se está cambiandotemplatees intencional y requerido para los archivos de plantilla personalizados )Ahora, en su nuevo archivo field-html-notice.html, puede modificar el archivo html para cargar el
$data.noticeuso de html y omitir el intervalo por completo. (por supuesto, si está buscando traducir su html, deberá personalizar esta solución para tener una solución alternativa)La solución sería tomar esta plantilla y modificar
para parecerse a algo más como esto:
Una vez que me tomé el tiempo para hacerlo, me di cuenta de que el equipo de Magento nos ha dado convenientemente la capacidad de agregar
additionalInfoque se representa como html.La opción mucho más pegajosa sería tener el divisor de notificación en la
additionalInfosección. Algo en la línea deEntonces sí, simple ¿verdad? Bien. Me voy a dormir ahora.
(tenga en cuenta que el validador xml se romperá si usa los caracteres reales
<o>en su información adicional, de ahí que el<y>Nota: resulta que puedes envolver tu html en
<![CDATA[<p>cool paragraph man</p>]]Thanks @Mariusfuente
<![CDATA[<p>cool paragraph man</p>]]No funciona debajomessagepero funciona conadditionalInfomag.2.2.2Las versiones actuales de Magento 2 2.2.8 y 2.3.1 son compatibles con la información adicional html de forma predeterminada en el campo Formulario UI.
No es necesario modificar la plantilla field.html.
fuente