0

我正在尝试通过页面上的 Mage_Core_Block_Text 块添加字符串。这是我的文件:

这是包布局 XML 更新文件 local.xml(在所有其他句柄都应用于包布局 XML 后最后调用):

/var/www/magpractice/app/design/frontend/practice/default/layout/local.xml

<?xml version="1.0"?>
<layout version="0.1.0">
  <helloworld_index_index>
    <reference name="content">
      <block type="core/text" name="our_message">
        <action method="setText"><text>Hello Mars</text></action>
      </block>
    </reference>
  </helloworld_index_index>
</layout>

这是派生的控制器:

/var/www/magpractice/app/code/local/Alanstormdotcom/Helloworld/controllers/IndexController.php

class Alanstormdotcom_Helloworld_IndexController extends Mage_Core_Controller_Front_Action {

  public function indexAction() {

  }

}

这是我模块中的 config.xml:

/var/www/magpractice/app/code/local/Alanstormdotcom/Helloworld/etc/config.xml

<config>
  <modules>
    <Alanstormdotcom_Helloworld>
      <version>0.1.0</version>
    </Alanstormdotcom_Helloworld>
  </modules>
  <global>
    <blocks>
        <helloworld>
            <class>Alanstormdotcom_Helloworld_Block</class>
        </helloworld>
    </blocks>
  </global>
  <frontend>
    <routers>
      <helloworld>
        <use>standard</use>
        <args>
          <module>Alanstormdotcom_Helloworld</module>
          <frontName>helloworld</frontName>
        </args>
      </helloworld>
    </routers>
  </frontend>
</config>

据我收集的内容,此示例不需要指定 Block 目录下的特殊块。

当我去 http://localhost/magpractice/helloworld/index/index 我得到一个空白页。

如果我将 ... 替换为 ... 也是如此。

为什么?我错过了什么?

谢谢。

4

1 回答 1

1

看起来您的indexAction方法缺少对loadLayoutand的调用renderLayout

$this->loadLayout();
$this->renderLayout();

loadLayout方法解析 XML 并实例化块对象。

renderLayout方法调用toHtml根块上的方法。

此外,将 avar_dump(__METHOD__);放入控制器操作以确保它被实际调用(相对于空白页,这可能意味着很多不同的东西)是有帮助的

于 2013-06-17T19:07:25.753 回答