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

Ricardo Martins の回答に追加する
には、ブロックで直接必要な場合は、製品価格が行うことを行うことができます

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 に答える