yireo-training / magento2-example-address-field-note
示例模块,展示如何在结账时添加自定义字段
dev-master
2020-08-19 12:48 UTC
Requires
- php: >=7.3.0
- magento/framework: ^100.1|^101.0|^102.0|^103.0
Requires (Dev)
- composer/composer: *@dev
- phpunit/phpunit: *
This package is auto-updated.
Last update: 2024-09-19 21:39:27 UTC
README
此模块以多种方式将新字段(note
)集成到现有发货地址字段集中。该note
字段遵循扩展属性(程序添加的值)的模式。
- 设置程序
- 结账中的发货地址步骤
- 客户账户下的地址表单
安装
composer require yireo-training/magento2-example-address-field-note:dev-master
设置程序
通过文件 Setup/InstallData.php
,字段 note
被添加到数据库作为不可见字段。这个EAV属性的唯一目的是作为扩展属性的后端来显示扩展属性的行为。通常,扩展属性会与某些其他表或甚至外部资源进行同步。这只是一个示例。如果你最终确实需要一个EAV属性,请忘记这种方法,而是创建一个自定义属性。扩展属性的方法是为了允许更复杂的属性存储在EAV之外。
客户账户下的地址表单
这实际上是不好的代码:虽然可以通过表单API干净地扩展客户实体,但地址表单不易扩展:其字段是硬编码在PHTML中的。因此,创建了一个插件(etc/di.xml
)将新字段 comment
(Block/Address/Edit/Field/Note.php
)插入到正确位置。
块类通过扩展属性代码调用 note
值。
XML文件 extension_attributes.xml
为了使字段 note
被识别为扩展属性,它被添加到文件 extension_attributes.xml
。
结账中的发货地址步骤
通过扩展属性方法添加 note
字段。在结账中添加自己的字段有两种方式:要么通过XML布局代码,要么通过基于PHP的布局处理器。在后一个示例中选择了后者,因为它将允许自动更新XML布局(取决于某种PHP逻辑)。首先将布局处理器添加到 etc/di.xml
,然后在 Processor/NoteAddressField.php
中定义。