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

时间:2011-11-15 23:06:59

标签: xml magento layout reference block

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

我写了一个自定义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安装上完美运行......

    1 个答案:

    答案 0 :(得分: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());   
    }    
    

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