4

例如,在 Magento 的核心中有app\code\core\Mage\Catalog\Block\Product\View\Options.php类。

我将如何创建一个实例?我试过了

Mage::getModel('Mage_Catalog_Block_Product_View_Options');

并且它起作用了,但是由于这不是模型类,而是块类,因此以这种方式创建它似乎是错误的。有什么替代方法?

谢谢!:)

4

3 回答 3

17

使用 createBlock 方法:

$block = $this->getLayout()->createBlock('catalog/product_view_options')
于 2013-05-29T14:42:00.673 回答
4

您需要在 Layout 上使用 createBlock,但块并不都有 getLayout 方法。

Mage::app()->getLayout()->createBlock('adminhtml/sales_order_grid');

这是“new My_Module_Block_Name”的更好技术,因为它允许在配置中重写块。

正如上面@Bartosz Górski 所建议的那样,在XML 中定义块是可取的,尽管不可能直接定义不同的动态内容。Magento 在 Cart 的项目渲染系统中对此有一个很好的解决方案 - 它动态创建块,但在渲染之前从 XML 加载它们的配置。

于 2015-08-20T09:10:53.370 回答
-4

只需使用新的运算符

$block = new Mage_Catalog_Block_Product_View_Options();

因为当您请求它们时,这些类将被自动加载!

于 2012-09-02T11:36:11.610 回答