Aunque otras respuestas son correctas, tampoco son la solución recomendada / adecuada.
El uso del ObjectManager está absolutamente prohibido en Magento 2. Por lo tanto, no confíe en esta solución, sino que utilice la DI adecuada para lograrlo. Para aprender a usar DI en Magento 2, consulte este recurso: http://devdocs.magento.com/guides/v2.0/extension-dev-guide/depend-inj.html
No es necesario extender AbstractView. Si observa la función original en AbstractView, puede ver que Magento utilizó el registro para obtener el producto. No necesita extender una clase específica para hacer esto, simplemente inyecte Magento \ Framework \ Registry en su constructor y solicite el elemento de registro "producto".
Ejemplo de código completo:
<?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()
enMagento\Catalog\Block\Product\View