How to get current product in phtml without registry?
My firm recently contacted Magento about this. According to them, there is no alternative way implemented yet.
I recently moved to Magento 2.3.2, and I had the same question
After reading this allready pointed out article (thanks https://magento.stackexchange.com/users/31910/shoaib-munir)
https://www.atwix.com/magento-2/alternatives-for-deprecated-registry-class-magento-2-3/
I found this implementation by @Vinai Kopp (https://github.com/Vinai)
https://github.com/Vinai/module-current-product-example
Basically, this trigger an observer based catalog_controller_product_init_after
event
for grabbing the actual displayed product and push the result into a custom registry
So after that, you can have it in your Block like the below code, or use ViewModel
as suggested by @Vinai
<?php
namespace Vendor\Module\Block;
use Magento\Framework\View\Element\Template;
use Vendor\Module\Registry\CurrentProduct;
class YourBlock extends Template
{
/**
* @var CurrentProduct
*/
private $_currentProduct;
public function __construct(
Template\Context $context,
...
CurrentProduct $currentProduct,
array $data)
{
$this->_currentProduct = $currentProduct;
parent::__construct($context, $data);
}
public function getCurrentProduct()
{
return $this->getProductId();
}
/**
* @return mixed
*/
private function getProductId()
{
return $this->_currentProduct->get()->getId();
}
}
you could also return the full product, but not sure, that is really needed
public function getCurrentProduct()
{
return $this->_currentProduct->get();
}
Hope this helps,
try something like this:
$myBlock = \Magento\Framework\App\ObjectManager::getInstance()->get('Magento\Catalog\Model\Session')->getData('last_viewed_product_id');
I found an article for depreciated registry in Magento 2.3. It is getting category from catalog session, I don't know if my code works or not but from this you will have a path where you need to do some debugging
Reference: https://www.atwix.com/magento-2/alternatives-for-deprecated-registry-class-magento-2-3/