php – 为什么我对Magento Block的getTemplateFile方法的调用返回null?

当我在索引控制器中使用以下代码时

<?php
class Nofrills_Booklayout_IndexController  extends Mage_Core_Controller_Front_Action
{
    public function indexAction()
    {
        $block = new Mage_Core_Block_Template();        
        $block->setTemplate('helloworld.phtml');
        var_dump($block->getTemplateFile());
    }
}

我希望得到这样的结果

string 'frontend/base/default/template/helloworld.phtml' (length=47)

但是,在我的系统上,我得到了

null

我的系统有什么问题,它为调用返回null

<code>getTemplateFile</code>

或者我如何自己调试?

发生在Magento 1.7.0.1上.

最佳答案 正如他在
original comment on the OP中指出的那样,这个问题需要一个tarball来解决问题.

必须加载Mage_Core_Block_Abstract的类定义,否则会输出有关include()或非对象操作的错误,或者根据开发人员模式可能根本没有输出.

应该注意getTemplateFile() was not definedMagento 1.4.1.0.最可能的问题是Mage_Core_Block_Template或Mage_Core_Model_Design_Package的错误版本,无论是在本地或社区代码池中修改,还是报告的Magento版本不正确.有用的输出如下:

public function indexAction()
{
    ini_set('display_errors',1);
    Mage::setIsDeveloperMode(true);

    $block = new Mage_Core_Block_Template();
    $block->setTemplate('helloworld.phtml');
    $debug = new ReflectionClass($block);

    echo Mage::getVersion();

    Zend_Debug::dump($debug->getFileName());
    Zend_Debug::dump($debug->getMethods());
}
点赞