【问题标题】:OroCommerce: How to add new fields to Order LineItems?OroCommerce:如何向 Order LineItems 添加新字段?
【发布时间】:2021-07-10 00:23:11
【问题描述】:

使用实体管理我扩展了订单行项目,添加了一些我需要的新字段、更新的架构等,新字段出现在订单视图页面的行项目网格中,但没有任何内容添加到订单编辑模式..我对购物清单行项目做了同样的事情,新字段出现在查看/编辑和添加行项目表单上,那么订单有什么问题以及如何在那里添加新字段?

更新: 查看订单编辑模板,我发现模板中没有字段定义,并且每个行项目字段都是通过表单部分呈现的。所以我找到的唯一可行的解​​决方案是更改 Oro\Bundle\OrderBundle\Form\Type\OrderLineItemType 的 oro 源代码,为我的字段添加部分

    public function buildView(FormView $view, FormInterface $form, array $options)
    {
        parent::buildView($view, $form, $options);

        $this->getSectionProvider()->addSections(
            \get_class($this),
            [
                'start_date' => ['data' => ['startDate' => []], 'order' => 5],
                'end_date' =>   ['data' => ['endDate' => []], 'order' => 6],
            ]
        );
    }

它们出现在订单编辑中。但是修改 oro 源代码是不可接受的,所以我创建了我的自定义 class CustomOrderLineItemType extends OrderLineItemType 并添加了迁移以替换 OrderLineItem 的现有表单类型.. 并且它不起作用,似乎 oro 仍然使用内部类,为什么?

class UpdateOrderLineItemFormType implements Migration
{
    /**
     * {@inheritdoc}
     */
    public function up(Schema $schema, QueryBag $queries)
    {
        $queries->addQuery(
            new UpdateEntityConfigEntityValueQuery(
                OrderLineItem::class,
                'form',
                'form_type',
                CustomOrderLineItemType::class
            )
        );
    }
}

【问题讨论】:

    标签: orocommerce


    【解决方案1】:

    您可以通过覆盖模板来扩展表格中的表格,它在哪里呈现。 请参阅有关如何使用 twig 检查器查找模板以及如何在 OroCommerce 中覆盖它的文档:

    https://doc.oroinc.com/frontend/back-office/templates/

    要使用新字段扩展现有表单,您可以编写表单类型扩展: https://symfony.com/doc/current/form/create_form_type_extension.html

    【讨论】:

    • 我看不到通过模板扩展添加新字段的可能性,请检查更新的第一篇文章
    • 我也扩展了答案。你可以写一个表单类型扩展
    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 2021-05-28
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多