¿Cómo puedo agregar un pequeño texto debajo de un campo en Magento 2 usando componentes ui?
Usando Magento\Framework\Data\Form
podrí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.html
Copie eso en su módulo con una ruta
view/base/web/template/form/field-html-notice.html
o algo similar ( tenga en cuenta que eltemplates
directorio que se está cambiandotemplate
es 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.notice
uso 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
additionalInfo
que se representa como html.La opción mucho más pegajosa sería tener el divisor de notificación en la
additionalInfo
secció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 debajomessage
pero funciona conadditionalInfo
mag.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