Meskipun jawaban lain benar, mereka juga bukan solusi yang disarankan / tepat
Menggunakan ObjectManager benar-benar dilarang di Magento 2. Jadi tolong jangan mengandalkan solusi ini, tetapi gunakan DI yang tepat untuk mencapai ini. Untuk mempelajari cara menggunakan DI di Magento 2, lihat sumber daya ini: http://devdocs.magento.com/guides/v2.0/extension-dev-guide/depend-inj.html
Memperluas AbstractView tidak perlu. Jika Anda melihat fungsi asli di AbstractView, Anda dapat melihat Magento menggunakan registri untuk mengambil produk. Anda tidak perlu memperpanjang kelas khusus untuk melakukan ini, cukup menyuntikkan Magento \ Framework \ Registry ke konstruktor Anda dan meminta item registri "produk".
Contoh kode lengkap:
<?php
// Example = Module namespace, Module = module name, rest of the namespace is just for example only, change this to whatever it is in your case.
namespace Example\Module\Block\Frontend\Catalog\Product\General;
use Magento\Catalog\Model\Product;
use Magento\Framework\Exception\LocalizedException;
use Magento\Framework\Registry;
use Magento\Framework\View\Element\Template;
class Information extends Template
{
/**
* @var Registry
*/
protected $registry;
/**
* @var Product
*/
private $product;
public function __construct(Template\Context $context,
Registry $registry,
array $data)
{
$this->registry = $registry;
parent::__construct($context, $data);
}
/**
* @return Product
*/
private function getProduct()
{
if (is_null($this->product)) {
$this->product = $this->registry->registry('product');
if (!$this->product->getId()) {
throw new LocalizedException(__('Failed to initialize product'));
}
}
return $this->product;
}
public function getProductName()
{
return $this->getProduct()->getName();
}
}
getProduct()
inMagento\Catalog\Block\Product\View