自定义模块中的Magento Layout xml无法正常工作

ibo*_*o_s 4 xml configuration layout magento

你好Magento专业人士.

我正在为magento编写一个自定义模块,并且在这里遇到一些问题.我的布局xml不起作用.首先 - 禁用缓存,禁用编译,启用magento开发人员模式并启用日志记录.似乎所有东西都配置正确,但我甚至没有得到异常或日志.

我的模块config.xml:

<?xml version="1.0"?>
<config>
    <modules>
        <Namespace_Module>
            <version>1.1.0</version>
            <depends>
                <Mage_Catalog />
            </depends>
        </Namespace_Module>
    </modules>
    <global>
        <helpers>
            <module>
                <class>Namespace_Module_Helper</class>
            </module>
        </helpers>
        <models>
            ...
        </models>
        <blocks>
            ...
        </blocks>
    </global>
    <frontend>              
        <routers>           
            <module>
                <use>standard</use>
                <args>
                    <module>Namespace_Module</module>
                    <frontName>module</frontName>       
                </args>
            </module>
        </routers>              
        <layout>
            <updates>
                <module>
                    <file>
                        module/module.xml
                    </file>
                </module>
            </updates>
        </layout>                               
    </frontend>
    <admin>
        <routers>
            <adminhtml>
                ...
            </adminhtml>
        </routers>
    </admin>
    <adminhtml>
        <layout>
            <updates>
                <module>
                    <file>module.xml</file>
                </module>
            </updates>
        </layout>
    </adminhtml>        
</config>
Run Code Online (Sandbox Code Playgroud)

我只是将"Namespace"和"Module"设置为我的自定义命名空间和自定义模块名称的占位符.

在前端的布局xml中,我只是输入了一些错误的配置来查看它是否会导致错误,但是xml文件甚至看不到要解析.例如,我投入<layout> </xxxlayout>

配置有什么问题?

布局xml文件放在base/default/layout/module/module.xml下

我在同一个文件中配置的管理布局完美无缺!

Ala*_*orm 14

它可能是很多东西(有些东西因为你config.xml在发布之前更改了你的文件而无法调试),但有一件事就是立即弹出

<file>
    module/module.xml
</file>
Run Code Online (Sandbox Code Playgroud)

应该是这个

<file>module/module.xml</file>
Run Code Online (Sandbox Code Playgroud)

由于无数和复杂的原因,Magento和PHP解析XML文档,其中空白区域在文本节点中很重要.这意味着当布局更新XML解析代码到达此处时

#File: app/code/core/Mage/Core/Model/Layout/Update.php
public function getFileLayoutUpdatesXml(
    //...
    foreach ($updateFiles as $file) {
        $filename = $design->getLayoutFilename($file, array(
            '_area'    => $area,
            '_package' => $package,
            '_theme'   => $theme
        ));
        if (!is_readable($filename)) {
            continue;
        }
Run Code Online (Sandbox Code Playgroud)

$filename它为您的代码生成的字符串将如下所示

string '/path/to/mage/app/design/frontend/base/default/layout/
                    module/module.xml
                    ' (length=...)
Run Code Online (Sandbox Code Playgroud)

也就是说,中间有一大块空白.此路径不会通过is_readable检查,因此将跳过您的布局文件.

从节点中删除空白区域,您将删除一个潜在的问题.

  • 在我看来,这是一个应该修复的错误...因为我写的是格式良好的xml.要举报. (4认同)