Magento Layout XML内容更新未加载模板

ele*_*n59 1 xml layout reference block magento

所以我一直在互联网上搜索几个小时,我无法弄清楚这一点.

我写了一个自定义Magento模块,它有一个自定义索引页面,在一个Magento安装(1.5.0.1)上可以正常工作,但在另一个(1.5.1.0)上没有.问题是当我转到模块的主URL(domain.com/module)时,我的自定义模板文件没有包含在内.

到目前为止,我知道这个:

  • 构建页面时包含Layout XML(因为如果我故意弄乱语法,我会在system.log中收到错误)
  • 如果我包含var_dump($ this-> getLayout() - > getUpdate() - > getHandles()); 在我的IndexController.php中我可以看到:
    1)我的IndexController被调用,所以必须正常
    2)我的模块的句柄被调用,并且具有我在布局XML文件中指定的完全相同的名称.
  • 不调用模板文件.我知道因为它应该抛出一个Magento异常(如果是为了测试目的,我在该模板文件中的一个对象中包含了一个不存在的函数调用).
  • 如果我在布局XML文件中将<block type ="identifier/action"更改为<block type ="core/template",包含模板文件,但当然它将无法正常工作,因为块函数来自自定义模块没有定义.

  • 我完全不知道接下来会在哪里看,所以任何帮助都会非常感激.我知道它必须是简单的东西,因为它在其他Magento安装上完美运行......

    Ala*_*orm 5

    我的猜测是类别名identifier/action无法正确解析为PHP/Magento块类.检查您的Magento异常日志(var/log/exception.log需要在管理控制台中启用日志记录),您可能会看到与"无效块类型"相关的一些错误.

    试试跑步

    $block = $this->getLayout()->createBlock('identifier/action');
    var_dump($block);
    if($block)
    {
        $block->setTemplate('path/to/template.phtml');
        var_dump($block->toHtml());   
    }    
    
    Run Code Online (Sandbox Code Playgroud)

    从PHP上下文(控制器操作)并检查您的块是否实际被实例化.还有必要检查您的模板文件是否实际存在于您的主题中,并且您的自定义块继承自模板块.