5

我有一个页面,其中包含一些以编程方式包含的模板块,如下所示:

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);

但它没有用。我该怎么做?

4

2 回答 2

22

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

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

所以我可以使用

<?php echo $this->getChildHtml('somealias'); ?>
于 2012-08-10T19:22:54.803 回答
0

加起来里卡多·马丁斯的回答
如果你直接在一个块中需要它,你可以做产品价格做的事情

Mage_Catalog_Block_Product

public function getPriceHtml($product)
{
    $this->setTemplate('catalog/product/price.phtml');
    $this->setProduct($product);
    return $this->toHtml();
}
于 2014-03-17T12:47:55.803 回答