コントローラでブロックメソッドを取得するにはどうすればよいですか?


8

私のブロックファイルのパスは

app\code\local\Company\Modulename\Block\Product\View\View.php

このファイルでは、メソッド名はgetId()です。

コントローラーでこのメソッドを呼び出す方法を教えてください。

回答:


13

こんにちは、コントローラーで以下のコードを使用してこのブロックを呼び出すことができます。

$block=$this->getLayout()->createBlock('blockPrefix/product_view_view');

$Id=$block->getId();

ブロックプレフィックスはapp \ code \ local \ Company \ Modulename \ Block \ Product \ View \ View.phpのタグの下に定義されています

   <blocks>
        <blockPrefix><!-- guess that modulePrefix is your module block prefix -->
        <class>Company_Modulenam_Block</class>
        </blockPrefix>
    </blocks>

ブロックチェックの呼び出し方法については、こちらをご覧ください。


12

ブロックがコントローラーのアクションにすでにアタッチされている場合は、次のように呼び出すことができます

$this->getBlock('block.name.here')->getId()

ブロックが現在のアクションと関係がない場合は、次のように呼び出すことができます。

Mage::getBlockSingleton('[module]/product_view')->getId()

2
2番目の例が少なくとも1.9.2.1では機能しないかどうかはわかりません。メソッドのdocブロックは、それが非推奨でありself::helper()、ブロックとヘルパーは異なるものであるため、それ自体が奇妙であると使用することを示しています!
ロビーアベリル2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.