Como posso adicionar um texto pequeno em um campo no Magento 2 usando componentes da interface do usuário.
Usando Magento\Framework\Data\Form
eu poderia fazer isso:
/** @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')
]
);
O código acima produziria isso (observe o texto sob o campo).
Como posso conseguir a mesma coisa usando os componentes da interface do usuário do formulário?
Eu tenho o formulário definido assim:
<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>
Eu tentei adicionar <item name="note" xsi:type="string" translate="true">Some note here</item>
, mas, adivinhem?
magento-2.0
forms
uicomponent
Marius
fonte
fonte
translate="true"
apenas para fazer com que o script do coletor de frases traduzível escolha isso também.<item name="notice" xsi:type="string" translate="true"><![CDATA[Some note <a href="https://google.com">here</a>]]></item>
Eu tive um tempo muito chato para descobrir como obter html para renderizar em um objeto de aviso. Descobri duas soluções. Eu sei que isso poderia ser um comentário, mas achei que outras pessoas também estariam interessadas nessa funcionalidade.
o elemento original pode ser encontrado em
/vendor/magento/module-ui/view/base/web/templates/form/field.html
Copie isso no seu módulo com um caminho
view/base/web/template/form/field-html-notice.html
ou algo semelhante ( observe que otemplates
diretóriotemplate
que está sendo alterado para intencional e necessário para arquivos de modelo personalizados )Agora, no seu novo arquivo field-html-notice.html, você pode modificar o arquivo html para carregar o
$data.notice
html em uso e ignorar completamente a extensão. (é claro que se você deseja traduzir seu html, precisará personalizar esta solução para ter uma solução alternativa)A solução seria pegar esse modelo e modificar
para parecer algo mais ou menos assim:
Depois que dediquei um tempo para fazer isso, percebi que a equipe do Magento convenientemente nos deu a capacidade de adicionar o
additionalInfo
que é renderizado como html.A opção mais difícil seria fazer com que a divisão de aviso seja renderizada na
additionalInfo
seção. Algo ao longo das linhas deEntão sim, simples, certo? Bem. Eu vou dormir agora.
(observe que o validador xml será interrompido se você usar os caracteres reais
<
ou>
em suas informações adicionais, portanto,<
e>
Nota: Acontece que você pode apenas envolver seu html em
<![CDATA[<p>cool paragraph man</p>]]
Obrigado @Mariusfonte
<![CDATA[<p>cool paragraph man</p>]]
Não funciona sob,message
mas funciona comadditionalInfo
mag.2.2.2As versões atuais do Magento 2 2.2.8 e 2.3.1 suportam o html additionalInfo por padrão no campo UI Form.
Não é necessário modificar o modelo field.html.
fonte