Comment encapsuler deux éléments de formulaire de paiement dans un div?
Par exemple, disons que je voulais encapsuler ces champs de pays et de code postal / zip dans une div avec la classe de example-class
, comment dois-je procéder?
Ce que j'ai essayé
J'ai essayé d'y parvenir en les ajoutant en tant qu'enfants de <item name="shippingAddress" xsi:type="array">
mais cela ne fait que provoquer des erreurs sur le frontend. Bien que j'aie obtenu une entrée de texte vierge sans étiquette à l'intérieur, .example-class
il y avait des erreurs sur le frontend.
L'erreur: Cannot read property 'indexedOptions' of undefined
Ceci est ma tentative rapide:
Magento_Checkout / web / template / shipping-address / form.html
<div id="shipping-new-address-form" class="fieldset address">
<div class="testing">
<!-- ko foreach: getRegion('example-class') -->
<!-- ko template: getTemplate() --><!-- /ko -->
<!--/ko-->
</div>
<!-- ko foreach: getRegion('additional-fieldsets') -->
<!-- ko template: getTemplate() --><!-- /ko -->
<!--/ko-->
</div>
checkout_index_index.xml
<item name="example-for-adding-class" xsi:type="array">
<item name="component" xsi:type="string">uiComponent</item>
<item name="config" xsi:type="array">
<item name="deps" xsi:type="array">
<item name="0" xsi:type="string">checkoutProvider</item>
</item>
</item>
<item name="displayArea" xsi:type="string">example-class</item>
<item name="children" xsi:type="array">
<!-- The following items override configuration of corresponding address attributes -->
<item name="region" xsi:type="array">
<!-- Make region attribute invisible on frontend. Corresponding input element is created by region_id field -->
<item name="visible" xsi:type="boolean">false</item>
</item>
<item name="region_id" xsi:type="array">
<item name="component" xsi:type="string">Magento_Ui/js/form/element/region</item>
<item name="config" xsi:type="array">
<item name="template" xsi:type="string">ui/form/field</item>
<item name="elementTmpl" xsi:type="string">ui/form/element/select</item>
<item name="customEntry" xsi:type="string">shippingAddress.region</item>
</item>
<item name="validation" xsi:type="array">
<item name="required-entry" xsi:type="boolean">true</item>
</item>
<!-- Value of region_id field is filtered by the value of county_id attribute -->
<item name="filterBy" xsi:type="array">
<item name="target" xsi:type="string"><![CDATA[${ $.provider }:${ $.parentScope }.country_id]]></item>
<item name="field" xsi:type="string">country_id</item>
</item>
</item>
<item name="postcode" xsi:type="array">
<!-- post-code field has custom UI component -->
<item name="component" xsi:type="string">Magento_Ui/js/form/element/post-code</item>
<item name="sortOrder" xsi:type="string">2</item>
<item name="validation" xsi:type="array">
<item name="required-entry" xsi:type="string">true</item>
</item>
</item>
<item name="country_id" xsi:type="array">
<item name="sortOrder" xsi:type="string">1</item>
</item>
</item>
</item>
Il doit y avoir un moyen plus simple de le faire, soit il me manque quelque chose, soit c'est la définition de la suringénierie. L'ajout d'un div sur deux éléments ne devrait jamais être aussi difficile.
Ce n'est pas une méthode recommandée, c'est simple mais pas élégant:
la source