Php 在多个模块中覆盖相同的后台办公室视图

Php 在多个模块中覆盖相同的后台办公室视图,php,symfony,prestashop-1.7,Php,Symfony,Prestashop 1.7,我的功能与 如文档所述,要覆盖模块中的管理模板,我们需要: 找到正确的模板(使用调试工具栏) 创建相同的路径(modules/mod_name/view/PrestaShop/../…)并添加视图 使用扩展注释参考原始模板 使用块注释引用现有块 基本Hello World示例: // Refer to the original template this the extends annotation. {% extends 'PrestaShopBundle:Admin/Product/Ca

我的功能与

如文档所述,要覆盖模块中的管理模板,我们需要:

  • 找到正确的模板(使用调试工具栏)
  • 创建相同的路径(modules/mod_name/view/PrestaShop/../…)并添加视图
  • 使用扩展注释参考原始模板
  • 使用注释引用现有块
基本Hello World示例:

// Refer to the original template this the extends annotation.
{% extends 'PrestaShopBundle:Admin/Product/CatalogPage:catalog.html.twig' %}

//Refer to an existing block using block annotation.
{% block product_catalog_filters %}
  Hello world!
{% endblock %}
所以,好吧,覆盖后台视图就像一种魅力

但让我们想象一下这个用例:

  • 我们有一个模块a,它覆盖后台视图并使用 块(例如:块产品目录过滤器
  • 我们想安装一个新的模块B,它将覆盖相同的模块 后台视图和同一块(ex:block 产品目录过滤器
这里有一个问题,最后安装的模块(模块B)将覆盖后台视图。但是模块A的所有超控功能都将丢失

我找到了解决办法。但对我来说,这不是一个好的做法

我们可以在所需的Prestashop后台视图中添加自定义块。(所以我们需要在一个Prestashop核心文件中编写代码

如果我们这样做,我们的模块可以覆盖后台视图并调用自定义块

使用此自定义块,我们可以确保只有我们的模块将覆盖视图,并避免与潜在的其他模块发生覆盖冲突

您知道有没有其他方法可以在不必在Prestashop核心文件中编写代码的情况下进行重写