2
Magento 2テンプレート:「$ block」または「$ this」を使用しますか?
Magento 2では、$this変数はテンプレートのブロックオブジェクトを参照しなくなりました。テンプレートクラスを参照します Magento\Framework\View\TemplateEngine\Php ただし、このテンプレートクラスにはpassthrough __callメソッドがあります #File: vendor/magento/framework/View/TemplateEngine/Php.php public function __call($method, $args) { return call_user_func_array([$this->_currentBlock, $method], $args); } これにより、メソッド呼び出しが実際のブロックに到達するようになります。また、phtmlテンプレートから保護されたメソッドを呼び出せない理由も説明します。 ただし、これに加えて、すべての(と思う?)テンプレートには、$blockpopulated という名前の変数があり、これは親ブロックオブジェクトも参照します。これはMagentoのリストテンプレートで使用中です。 #File: vendor/magento/module-catalog/view/frontend/templates/product/list.phtml //... $_productCollection = $block->getLoadedProductCollection(); どこ$block変数が使用されますが、明示的に定義されることはありません。 上記の違い以外に、あるテクニックを他のテクニックと使用することの間に違いはありますか?すなわち、両方を実行し、同じオブジェクト$blockを$this->currentBlock参照しますか?