7 magento
是否有一种方法在magento中创建一个块并调用其toHtml()方法而无需加载整个布局对象.
例如,在我的一个ajax控制器中,我想发送一个特定的块作为json输出,我对任何其他块都不感兴趣,但我被迫做以下事情:
$this->loadLayout();
$this->getLayout()->getBlock('my_block_name')->toHtml();
Run Code Online (Sandbox Code Playgroud)
这会加载整个布局,这似乎是不必要的.
我刚刚完成了这样做:
在我的布局XML模块中:
<mymodule_ajax_action>
<block type="core/template_facade" name="root" template="path/to/template/file.phtml"/>
</mymodule_ajax_action>
Run Code Online (Sandbox Code Playgroud)
通过命名块"root",它仅使用此模板文件替换整个布局.
所以在我的控制器中:
public function actionAction() {
$this->loadLayout();
$this->renderLayout();
}
Run Code Online (Sandbox Code Playgroud)
只返回那个块.
您可以尝试以下操作:
$layout = Mage::getSingleton('core/layout');
$html = $layout
->createBlock('module/block_type')
->setTemplate('template/file.phtml')
->toHtml();
Run Code Online (Sandbox Code Playgroud)
从您的代码来看,您似乎在控制器中,因此您可以将代码稍微缩短为以下内容(功能上绝对没有区别,只是少了一行代码)...
$html = $this->getLayout()
->createBlock('module/block_type')
->setTemplate('template/file.phtml')
->toHtml();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7690 次 |
| 最近记录: |