Magento:如何以编程方式创建子块?

时间:2012-08-10 19:05:49

标签: magento magento-1.x

我有一个页面,其中包含一些模块块,如下所示:

public function indexAction() {
    $this->loadLayout();
    $block = $this->getLayout()
        ->createBlock('core/template')
        ->setTemplate('somefolder/sometemplate.phtml');

    $this->getLayout()->getBlock('content')->append($block);
    $this->renderLayout();

}

我想在 sometemplate.phtml $ this-> getChildHtml('somechild')内插入另一个区块。

我试过

        $box = $this->getLayout()
        ->createBlock('page/html')
        ->setTemplate('somefolder/somechild.phtml');
        $block->append($box);

但没有奏效。 我该怎么办?

2 个答案:

答案 0 :(得分:21)

我使用 setChild 方法解决了这个问题,如下所示:

$block->setChild('somealias',$childBlock);

所以我可以使用

<?php echo $this->getChildHtml('somealias'); ?>

答案 1 :(得分:0)

加上Ricardo Martins的答案 如果您需要直接在块中,您可以做什么产品价格

Mage_Catalog_Block_Product

public function getPriceHtml($product)
{
    $this->setTemplate('catalog/product/price.phtml');
    $this->setProduct($product);
    return $this->toHtml();
}