Wie kann ich in Magento 2 mit Hilfe von UI-Komponenten einen kleinen Text unter ein Feld einfügen?
Mit Magento\Framework\Data\Form
könnte ich das machen:
/** @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')
]
);
Der obige Code würde dies erzeugen (beachten Sie den Text unter dem Feld).
Wie kann ich mit form ui-components dasselbe erreichen?
Ich habe die Form wie folgt definiert:
<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>
Ich habe versucht hinzuzufügen, <item name="note" xsi:type="string" translate="true">Some note here</item>
aber weißt du was?
magento-2.0
forms
uicomponent
Marius
quelle
quelle
translate="true"
nur um das übersetzbare Phrasensammlerskript dazu zu bringen, dies ebenfalls aufzunehmen.<item name="notice" xsi:type="string" translate="true"><![CDATA[Some note <a href="https://google.com">here</a>]]></item>
Ich hatte eine wirklich nervige Zeit damit, herauszufinden, wie man HTML in einem Benachrichtigungsobjekt rendert. Es gab zwei Lösungen, die ich herausgefunden habe. Ich weiß, dass dies möglicherweise ein Kommentar sein könnte, aber ich nahm an, dass auch andere Leute an dieser Funktionalität interessiert sind.
Das Originalelement finden Sie unter
/vendor/magento/module-ui/view/base/web/templates/form/field.html
Kopieren Sie das in Ihr Modul mit einem Pfad von
view/base/web/template/form/field-html-notice.html
oder ähnlichem ( beachten Sie, dass dastemplates
Verzeichnis, in das es geänderttemplate
wird, beabsichtigt ist und für benutzerdefinierte Vorlagendateien erforderlich ist ).Jetzt können Sie in Ihrer neuen Datei field-html-notice.html die HTML-Datei so ändern, dass sie die HTML-Datei lädt und die gesamte
$data.notice
Zeitspanne überspringt. (Wenn Sie Ihre HTML-Datei übersetzen möchten, müssen Sie diese Lösung natürlich anpassen, um Abhilfe zu schaffen.)Die Lösung wäre, diese Vorlage zu nehmen und zu ändern
um etwas ähnlicher auszusehen:
Nachdem ich mir die Zeit dafür genommen hatte, stellte ich fest, dass das Magento-Team uns die Möglichkeit gegeben hat
additionalInfo
, HTML-Dateien hinzuzufügen .Die viel klebrigere Option wäre, die Nachricht div in dem
additionalInfo
Abschnitt rendern zu lassen . Etwas in der Art vonAlso ja, einfach, oder? Gut. Ich gehe jetzt schlafen.
(Bitte beachten Sie, dass der XML - Validator abbricht, wenn Sie die tatsächlichen
<
oder>
Zeichen in Ihren zusätzlichen Informationen verwenden, daher das<
und>
Hinweis: Es stellt sich heraus, dass Sie Ihre HTML-
<![CDATA[<p>cool paragraph man</p>]]
Datei einfach in Thanks @Marius einbinden könnenquelle
<![CDATA[<p>cool paragraph man</p>]]
Funktioniert nicht unter,message
aber es funktioniert mitadditionalInfo
mag.2.2.2Die aktuellen Magento 2-Versionen 2.2.8 und 2.3.1 unterstützen beide standardmäßig das HTML AdditionalInfo im UI-Formularfeld.
Die Vorlage field.html muss nicht geändert werden.
quelle