Diğer cevaplar doğru olsa da, önerilen / uygun çözüm de değildir.
Magento 2'de ObjectManager'ı kullanmak kesinlikle yasaktır. Bu yüzden lütfen bu çözüme güvenmeyin, bunun yerine bunu gerçekleştirmek için uygun DI kullanın. Magento 2'de DI'yi nasıl kullanacağınızı öğrenmek için şu kaynağa bakın: http://devdocs.magento.com/guides/v2.0/extension-dev-guide/depend-inj.html
AbstractView öğesini genişletmek gerekli değildir. AbstractView içindeki özgün işleve bakarsanız, Magento'nun ürünü getirmek için kayıt defterini kullandığını görebilirsiniz. Bunu yapmak için belirli bir sınıfı genişletmeniz gerekmez, sadece Magento \ Framework \ Registry dosyasını yapıcıya enjekte edin ve "ürün" kayıt defteri öğesini isteyin.
Tam kod örneği:
<?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()
içindeMagento\Catalog\Block\Product\View