sbodak / magento2-checkout-custom-form
在 Magento 2 结账的第一步添加自定义表单。
1.2.1
2019-03-27 21:10 UTC
Requires
- php: ~7.0.0|~7.1.3|~7.2.0
This package is not auto-updated.
Last update: 2024-09-29 05:08:00 UTC
README
概述
向 Magento 2 结账添加自定义表单字段。表单将出现在第一步(发货步骤)中,位于发货方式之上。表单适用于已登录客户和访客。订单提交后,所有数据都将设置在 sales_order
表中。数据在页面刷新后仍然保留在表单中,直到购物车活动。
表单数据将通过独立的 API 请求设置在 quota
表中
/V1/carts/mine/set-order-custom-fields
(适用于已登录客户)/V1/guest-carts/:cartId/set-order-custom-field
(适用于访客)
兼容性
- 标签 1.2.* => Magento 2.3
- 标签 1.1.* => Magento 2.1.x - 2.2.x(不再受支持)
需求
- PHP 7.0 或更高版本
安装细节
- 运行
composer require sbodak/magento2-checkout-custom-form
- 运行
php bin/magento module:enable Bodak_CheckoutCustomForm
- 运行
php bin/magento setup:upgrade
示例自定义表单字段
- 买家
- 买家电子邮件地址
- 采购订单号
- 商品标记
- 评论
修改表单字段
- 您需要修改
Api/Data/CustomFieldsInterfaces.php
中的服务合同数据接口 - 您需要修改
Setup/InstallData.php
中的表结构 - 您需要在
Observer/AddCustomFieldsToOrder.php
中添加新字段以将数据保存到 quota 和 sales 表 - 您需要在
view/frontend/layout/checkout_index_index.xml
中添加新条目 - 您需要修改
Model/Data/CustomFields.php
中的方法 - 您需要修改
Model/CustomFieldsRepository.php
中的方法
<item name="custom-checkout-form-fieldset" xsi:type="array">
<item name="component" xsi:type="string">uiComponent</item>
<item name="displayArea" xsi:type="string">custom-checkout-form-fields</item>
<item name="children" xsi:type="array">
[... place here new definition of your field]
</item>
</item>
查看官方文档: https://devdocs.magento.com/guides/v2.3/howdoi/checkout/checkout_form.html
- 您需要修改模板视图
view/frontend/templates/order/view/custom_fields.phtml
(客户账户)和view/adminhtml/templates/order/view/custom_fields.phtml
(管理面板)。 - 结账表单视图将自动使用 Ui Components 生成
必填项
如果您想使字段必填,请检查此示例
<item name="checkout_purchase_order_no" xsi:type="array">
<item name="component" xsi:type="string">Magento_Ui/js/form/element/abstract</item>
<item name="config" xsi:type="array">
<item name="customScope" xsi:type="string">customCheckoutForm</item>
<item name="template" xsi:type="string">ui/form/field</item>
<item name="elementTmpl" xsi:type="string">ui/form/element/input</item>
</item>
<item name="validation" xsi:type="array">
<item name="required-entry" xsi:type="boolean">true</item>
</item>
<item name="provider" xsi:type="string">checkoutProvider</item>
<item name="dataScope" xsi:type="string">customCheckoutForm.checkout_purchase_order_no</item>
<item name="label" xsi:type="string">Purchase order no.</item>
<item name="sortOrder" xsi:type="string">3</item>
</item>
快速字段覆盖
您可以修改 i18n/en_US.csv
翻译以更改字段名称。
结账视图 - 自定义表单 - 访客
结账视图 - 自定义表单 - 已登录
自定义账户 - 订单历史视图
管理面板 - 订单编辑
卸载
要删除此模块,请运行 php bin/magento module:uninstall Bodak_CheckoutCustomForm
。它将删除所有数据,并在 sales_order
和 quote
表中删除列。