php – Magento模块 – 覆盖控制器,添加模板
作者:互联网
我目前正在研究Magento扩展,我已经覆盖了一个核心控制器,它工作正常.
我现在已经向我的控制器添加了一个新动作.问题是每当我调用动作时都会产生一个空白页面.如果我回应一些东西,它会正确显示.
因此,我挖掘了Customer模块和控制器的核心.我在那里看到像indexAction()这样的方法以这种方式实现布局:
<?php
public function indexAction()
{
$this->loadLayout();
$this->_initLayoutMessages('customer/session');
$this->_initLayoutMessages('catalog/session');
$this->getLayout()->getBlock('content')->append(
$this->getLayout()->createBlock('customer/account_dashboard')
);
$this->getLayout()->getBlock('head')->setTitle($this->__('My Account'));
$this->renderLayout();
}
我将此转移到我自己的动作,现在正确地呈现了布局.现在提问:
无论我进入 – > createBlock(‘…’)调用,都不会在内容区域中呈现任何内容.
如何指定我自己的块的位置作为页面内容呈现,同时仍然使用布局进行装饰?
我试图摆弄/design/frontend/base/default/layout/myaddon.xml中的xml文件,但实际上无法使其正常工作.
解决方法:
在单个StackOverflow帖子中覆盖整个Magento布局系统有点多,但您应该能够通过以下方式实现您想要的效果.
$block = $this->getLayout()->createBlock('Mage_Core_Block_Text');
$block->setText('<h1>This is a Test</h1>');
$this->getLayout()->getBlock('content')->append($block);
从上面开始,你应该能够建立你需要的东西.您的想法是创建自己的块,然后将它们附加到布局中的现有块.理想情况下,您正在创建自己的块类来实例化(而不是Mage_Core_Block_Text),并使用其内部模板机制加载phtml文件(将HTML生成与代码生成分开).
如果你有兴趣了解布局系统如何工作的内部结构,那么你可能会比我在这个主题上写的an article更糟糕.
标签:php,magento,e-commerce 来源: https://codeday.me/bug/20190827/1741409.html