4

Magentoのコアには、たとえばapp \ code \ core \ Mage \ Catalog \ Block \ Product \ View\Options.phpクラスがあります。

そのインスタンスをどのように作成しますか?私は試した

Mage::getModel('Mage_Catalog_Block_Product_View_Options');

動作しましたが、これはModelクラスではなく、Blockクラスであるため、そのように作成するのは間違っているようです。それに代わるものは何ですか?

ありがとう!:)

4

3 に答える 3

17

createBlockメソッドを使用します。

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

レイアウトでcreateBlockを使用する必要がありますが、すべてのブロックにgetLayoutメソッドがあるわけではありません。

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

これは、構成でブロックの書き換えが可能になるため、「新しいMy_Module_Block_Name」に続くより良い手法です。

@BartoszGórskiが上記で示唆しているように、XMLでブロックを定義することをお勧めしますが、多様な動的コンテンツを直接定義することはできません。Magentoは、カートのアイテムレンダリングシステムでこれに適したソリューションを提供します。ブロックを動的に作成しますが、レンダリングする前にXMLから構成をロードします。

于 2015-08-20T09:10:53.370 に答える
-4

新しい演算子を使用するだけです

$block = new Mage_Catalog_Block_Product_View_Options();

クラスはリクエスト時に自動ロードされるためです。

于 2012-09-02T11:36:11.610 に答える