覆盖自定义模块中的html文件 - magento2

Mak*_*tan 6 magento2 magento-2.0 magento2.0.2

我正在为magento2中的支付方式开发自定义模块.目前我正在使用来自供应商目录的cc-form.html和模块工作正常.见下面的路径.

供应商/的magento /模块付款/视图/前端/网络/模板/支付/ CC-form.html

有没有办法覆盖html文件?

任何帮助,将不胜感激.谢谢!

Ant*_*Guz 15

就在这里.您可以在pub static中查看如何构建静态资产的路径.

这个怎么运作

每个资产都可以通过页面enter code here"RequireJS ID" 从页面访问.它类似于真实路径,但各不相同.

例如文件http://magento.vg/static/adminhtml/Magento/backend/en_US/Magento_Theme/favicon.ico.

这是真正的道路/app/code/Magento/Theme/view/adminhtml/web/favicon.ico.
它的RequireJS ID是Magento_Theme/favicon.ico.这意味着可以通过require("text!Magento_Theme/favicon.ico")或类似的命令访问该文件.

您可以发现RequireJS ID包含模块名称和路径的有用部分(在文件夹之后web).

我该如何替换文件

所以你有文件
vendor/magento/module-payment/view/frontend/web/template/payment/cc-form.html

在页面上加载src为
http://magento.vg/static/frontend/Magento/luma/en_US/Magento_Payment/template/payment/cc-form.html

所以它的RequireJS ID是
Magento_Payment/template/payment/cc-form.html

旁注:内部UI组件的东西等于Magento_Payment/payment/cc-form.单词"template"和".html"会自动添加.

现在您可以通过RequireJS配置替换此文件以进行应用

var config = {
  "map": {
    "*": {
      "Magento_Payment/template/payment/cc-form.html": 
          "<OwnBrand>_<OwnModule>/template/payment/cc-form.html"
    }
  }
};
Run Code Online (Sandbox Code Playgroud)

此代码段放在requirejs-config.js模块中的文件中.就这些.

  • 另一个使用注意事项:在我的例子中,模板用于**管理UI组件**,其中包含如下所示的路径映射:`'ui/template':'Magento_Ui/templates'`(参见基于Composer的文件)在`vendor/magento/module-ui/view/base/requirejs-config.js`).因此,在我的重新映射条目中,目标路径(左侧)必须从`Magento_Ui/template/form/element/media.html`更改为`ui/template/form/element/media.html`. (3认同)