yireo / 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:59:47 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
中定义。