例如,在 Magento 的核心中有app\code\core\Mage\Catalog\Block\Product\View\Options.php类。
我将如何创建一个实例?我试过了
Mage::getModel('Mage_Catalog_Block_Product_View_Options');
并且它起作用了,但是由于这不是模型类,而是块类,因此以这种方式创建它似乎是错误的。有什么替代方法?
谢谢!:)
例如,在 Magento 的核心中有app\code\core\Mage\Catalog\Block\Product\View\Options.php类。
我将如何创建一个实例?我试过了
Mage::getModel('Mage_Catalog_Block_Product_View_Options');
并且它起作用了,但是由于这不是模型类,而是块类,因此以这种方式创建它似乎是错误的。有什么替代方法?
谢谢!:)
使用 createBlock 方法:
$block = $this->getLayout()->createBlock('catalog/product_view_options')
您需要在 Layout 上使用 createBlock,但块并不都有 getLayout 方法。
Mage::app()->getLayout()->createBlock('adminhtml/sales_order_grid');
这是“new My_Module_Block_Name”的更好技术,因为它允许在配置中重写块。
正如上面@Bartosz Górski 所建议的那样,在XML 中定义块是可取的,尽管不可能直接定义不同的动态内容。Magento 在 Cart 的项目渲染系统中对此有一个很好的解决方案 - 它动态创建块,但在渲染之前从 XML 加载它们的配置。
只需使用新的运算符
$block = new Mage_Catalog_Block_Product_View_Options();
因为当您请求它们时,这些类将被自动加载!