【问题标题】:Block from controller in magento在 magento 中阻止控制器
【发布时间】:2014-09-18 16:54:19
【问题描述】:

我正在尝试在 /index.php/pincel/payment/error/ 中显示内容,并且我有下一个文件:

块/错误.php

<?php class PincelStudios_Pincel_Block_Error extends Mage_Core_Block_Template { } ?>

etc/config.xml

    <layout>
        <updates>
            <pincel>
                <file>pincel.xml</file>
            </pincel>
        </updates>
    </layout>

控制器/PaymentController.php

    public function errorAction()
{
    $this->loadLayout()->renderLayout();
}

但是我得到了一个没有任何错误的白色布局(在日志中都没有)http://i.stack.imgur.com/vzLkk.png

有什么想法吗?提前致谢

【问题讨论】:

  • 你使用的是模板文件(.phtml),pincel.xml的内容是什么?
  • 你为 pincel 设置路由了吗?
  • 你好,是的,在我的 config.xml 我有这个:&lt;routers&gt; &lt;pincel&gt; &lt;use&gt;standard&lt;/use&gt; &lt;args&gt; &lt;module&gt;PincelStudios_Pincel&lt;/module&gt; &lt;frontName&gt;pincel&lt;/frontName&gt; &lt;/args&gt; &lt;/pincel&gt; &lt;/routers&gt;

标签: magento block


【解决方案1】:

您似乎没有提供所有必要的信息和文件

/app/design/frontend/default/default/layout/pincel.xml

不见了。

<pincel_payment_error>
    <reference name="content"> <!-- Place were you want to display your content -->
        <block type="pincel/error" name="pincel" template="yourtemplate if necessary" />
    </reference>
</pincel_payment_error>

你有吗?

【讨论】:

  • +1 renderLayout() 将在您的布局中加载 pincel_payment_error 句柄。您必须确保明确定义。
  • 是的,我添加了文件,但仍然是空的。有没有办法直接从控制器添加内容? (只有几个静态文本行)。
  • 在这种情况下,您可以在 Magento Admin 中创建静态块并在控制器中使用: $this->loadLayout(); $this->_addContent($this->getLayout()->createBlock('cms/block')->setBlockId("YOURBLOCKNAME")); $this->renderLayout();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-27
  • 1970-01-01
  • 1970-01-01
  • 2016-10-02
相关资源
最近更新 更多