有谁知道在 oroCommerce 的注册表单中添加额外字段(Infinitepay Bundle 提供的增值税 ID)的方法?我找不到办法。
问题是该字段不是 CustomerUser 实体的一部分,而是关联的 Customer 实体的一部分。所以普通的 builder->add() 命令不起作用。我也很难找到一种方法将任何代码放入我自己的 Bundle 并让它工作(而不是破解核心)。我已经阅读了 Symfony 文档,但它们并没有太大帮助。
有谁知道在 oroCommerce 的注册表单中添加额外字段(Infinitepay Bundle 提供的增值税 ID)的方法?我找不到办法。
问题是该字段不是 CustomerUser 实体的一部分,而是关联的 Customer 实体的一部分。所以普通的 builder->add() 命令不起作用。我也很难找到一种方法将任何代码放入我自己的 Bundle 并让它工作(而不是破解核心)。我已经阅读了 Symfony 文档,但它们并没有太大帮助。
首先,您需要创建 symfony 表单扩展,请参阅文档
然后将 VAT ID 字段添加到表单构建器并添加优先级低于此的 POST_SUBMIT 侦听器
在侦听器的代码中,您可以将增值税 ID 值映射到客户实体。
升级版:
- 我究竟应该如何使用表单类型扩展?
好的。使用这个要点
文档说它们适用于扩展字段类型,而不是表单。
一样的。任何表单类型都可以用作另一种表单类型的子(字段)。
我不能用 $builder->add() 来做——这给了我一个 500 错误,因为实体没有那个字段。
您应该为您的字段添加一个选项“mapped => false”。查看文档
我还需要一种方法将其放入我自己的捆绑包中,而不是放入核心中。
您可以使用表单类型扩展从您自己的包中修改任何表单类型。这就是他们被创造的目的。