Я пытаюсь переопределить файл register.phtml в моем модуле, но, похоже, есть некоторая проблема с настройкой, из-за которой Magento не может использовать мой пользовательский шаблон для переопределения шаблона в основном модуле. Я проверил код, но не могу найти проблему. Кто-нибудь может помочь? Заранее спасибо. module.xml:
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Namespace_ModuleName" setup_version="0.0.2">
<sequence>
<module name="Magento_Customer"/>
</sequence>
</module>
</config>
customer_account_create.xml в пространстве имен \ ModuleName \ view \ frontend \ layout:
<?xml version="1.0"?>
<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/layout_generic.xsd">
<referenceBlock name="customer_form_register">
<arguments>
<argument name="template" xsi:type="string">Namespace_ModuleName::form/register.phtml</argument>
</arguments>
</referenceBlock>
</layout>
composer.json:
{
"name": "namespace/module-modulename",
"description": "modulename",
"type": "magento2-module",
"version": "0.0.2",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"require": {
"php": "~5.5.0|~5.6.0",
"magento/framework": "~0.42",
"magento/magento-composer-installer": "*",
"magento/module-customer": "*"
},
"extra": {
"map": [
[
"*",
"Namespace/ModuleName"
]
]
}
}
Используйте этот код в вашем файле макета вместо:
Он заменяет «макет» на «страницу» и добавляет тег body
РЕДАКТИРОВАТЬ: 2-й вариант - удалить оригинальный блок и добавить новый с нужным шаблоном.
источник
setTemplate
метод, который затем находит шаблон в том же модуле. Очень грязное решение, но единственное, что сработало для меня!Вам не хватает тега <body> после тега <page>, попробуйте:
источник
Переопределение методов setTemplate работает лучше всего для меня.
источник
Я знаю, что это старо, но если это кому-то поможет,
В этом выпуске github magento2 / Issues / 3356 говорится, что метод referenceBlock и arguments (упомянутый в вопросе) страдает ошибкой, в отличие от устаревшего и рабочего метода:
документация (установить шаблон блока) не отражает фактического положения вещей.
источник