Мне нужно было сделать то же самое. Оформление заказа Magento выдает регион в соответствии с методами доставки, используя следующее:
<div id="onepage-checkout-shipping-method-additional-load">
<each args="getRegion('shippingAdditional')" render="" />
</div>
Однако элемент shippingAdditional
на самом деле не определен в базе кода magento. Таким образом, чтобы ваши поля отображались под способами доставки, вы можете использовать вышеуказанный регион. Для этого вам нужно изменить родительский элемент на <item name="shippingAddress" xsi:type="array">
вместо <item name="before-form" xsi:type="array">
и убедиться, что ваш элемент называется <item name="shippingAdditional" xsi:type="array">
. Примерно так:
...
<item name="shippingAddress" xsi:type="array">
<item name="children" xsi:type="array">
<item name="shippingAdditional" xsi:type="array">
<item name="displayArea" xsi:type="string">shippingAdditional</item>
<!-- The rest of your items config here... -->
</item>
</item>
</item>
...
Обратите внимание , что вам нужно определить <item name="displayArea" xsi:type="string">shippingAdditional</item>
как без таковой, который не будет отображаться.
Затем вы можете использовать некоторые javascript / knockout, чтобы показать и скрыть эти поля в зависимости от выбранного метода доставки.