Próbuję przesłonić register.phtml w moim module, ale wygląda na to, że istnieje jakiś problem z konfiguracją, który sprawia, że Magento nie może użyć mojego niestandardowego szablonu do zastąpienia tego w module podstawowym. Sprawdziłem kod, ale nie mogę znaleźć problemu. Czy ktoś może pomóc? Z góry dziękuję. 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 w obszarze Przestrzeń nazw \ nazwa_modułu \ widok \ interfejs użytkownika \ układ:
<?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"
]
]
}
}
Zamiast tego użyj tego kodu w pliku układu:
Zastępuje „układ” słowem „strona” i dodaje znacznik body
EDYCJA: 2. alternatywą jest usunięcie oryginalnego bloku i dodanie nowego z pożądanym szablonem
źródło
setTemplate
metodę, która następnie znajdzie szablon w tym samym module. Bardzo brudne rozwiązanie, ale jedyna rzecz, która działała dla mnie!Brakuje znacznika <body> po znaczniku <page>, spróbuj:
źródło
Przesłonięcie metod setTemplate działa najlepiej dla mnie.
źródło
Wiem, że to jest stare, ale jeśli to komuś pomaga,
ten problem github magento2 / Issues / 3356 stwierdza, że metoda referenceBlock i arguments (wspomniana w pytaniu) cierpi na błąd w przeciwieństwie do przestarzałej i działającej metody:
dokumentacja (Ustaw szablon bloku) nie odzwierciedla faktycznego stanu rzeczy.
źródło