OroPlatform:覆盖 Oro 包模板

Posted

技术标签:

【中文标题】OroPlatform:覆盖 Oro 包模板【英文标题】:OroPlatform: override Oro bundle template 【发布时间】:2021-06-04 23:53:42 【问题描述】:

上下文

我正在尝试覆盖以下模板:vendor/oro/platform/src/Oro/Bundle/OrganizationBundle/Resources/views/BusinessUnit/update.html.twig

这个模板似乎属于OroOrganizationBundle 包。

问题

因此,根据 Symfony 4.X 文档,我尝试将我的覆盖放在以下路径中:templates/bundles/OroOrganizationBundle/BusinessUnit/update.html.twig:https://symfony.com/doc/4.4/bundles/override.html#templates

我已清除缓存:symfony console cache:clear,但没有任何变化。

这是我的覆盖模板:

% extends 'OroOrganizationBundle:BusinessUnit:update.html.twig' %

% block content_data %
    % set id = 'business_unit-profile' %
    % set dataBlocks = [
        'title': 'General'|trans,
        'class': 'active',
        'subblocks': [
            'title': '',
            'data': [
                form_widget(form.appendUsers, 'id': 'businessUnitAppendUsers'),
                form_widget(form.removeUsers, 'id': 'businessUnitRemoveUsers'),
                form_row(form.name),

                form_row(form.parentBusinessUnit),

                form_row(form.phone),
                form_row(form.website),
                form_row(form.email),
                form_row(form.fax),
            ]
        ]
    ] %

    % set dataBlocks = dataBlocks|merge(oro_form_additional_data(form, 'Additional Override'|trans)) %

    % set dataBlocks = dataBlocks|merge([
        'title' : 'oro.organization.businessunit.users.label'|trans,
        'subblocks': [
            'title' : null,
            'useSpan': false,
            'data' : [dataGrid.renderGrid(gridName, business_unit_id: entityId,  cssClass: 'inner-grid' )]
        ]
    ] ) %

    % set data = 
        'formErrors': form_errors(form)? form_errors(form) : null,
        'dataBlocks': dataBlocks
     %

     parent() 
% endblock content_data %

这是以下命令行的输出:symfony console debug:twig | grep Organization

【问题讨论】:

尝试将扩展设置为您的布局文件而不是捆绑包。 谢谢,但我认为我的问题来自这条路径templates/bundles/OroOrganizationBundle/BusinessUnit/。 OroPlatform 似乎没有读取该文件.. 使用 'bin/console debug:twig' 查看 twig 用于模板的目录列表及其搜索顺序。 这很奇怪.. 这是以下命令行的输出:symfony console debug:twig | grep Organization。 Symfony 似乎正在查看这个文件夹.. upload.vaa.red/2i9PM7#af0976ea2bd9833cafb6201d4f3bb448 考虑更新您的问题,而不是链接。至少我假设它是一个链接。 twig 从外部网站加载模板是不寻常的。 【参考方案1】:

最后,我使用 Oro 文档中的这篇文章找到了解决方案:https://doc.oroinc.com/frontend/back-office/templates/

我的案例的正确路径是:src/Resources/OroOrganizationBundle/views/BusinessUnit/update.html.twig

我尝试使用 Symfony 文档中的“扩展”方法:https://symfony.com/doc/4.4/bundles/override.html#templates,它只覆盖特定的块部分。就我而言,我需要复制整个文件,但它可以工作。

【讨论】:

以上是关于OroPlatform:覆盖 Oro 包模板的主要内容,如果未能解决你的问题,请参考以下文章

OroPlatform:在核心实体上添加自定义字段

使用 OROPlatform 时如何测试自己的代码?

OroPlatform:如何覆盖 datetimepicker js 小部件

OroPlatform:覆盖核心实体表单构建器

在 Oro 平台上使用 Ajax 加载模板时如何触发页面组件事件?

OroPlatform:网格行上的自定义操作