yireo-training/magento2-example-address-field-note

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

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

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