yireo/example-address-field-note

示例模块,展示如何向结账添加自定义字段

dev-master 2020-08-19 12:48 UTC

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)将新字段 commentBlock/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 中定义。