Magento2: Comment obtenir l'ID produit sur mon module personnalisé

11

Je suis nouveau sur magento2 et actuellement je construis un module personnalisé et je veux obtenir le produit ID/SKUdu catalogue. J'essaie d'appeler à l'aide d'une fonction située dans le dossier Block. s'il vous plaît donnez votre avis!

ming
la source

Réponses:

36

Essaye ça:

<?php 
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $product = $objectManager->get('Magento\Framework\Registry')->registry('current_product');//get current product
    echo $product->getId();
    echo $product->getName();
?>

OU

Ajoutez le code ci-dessous dans votre fichier de blocage.

par exemple app/code/AR/CustomModule/Block/CustomBlock.php

<?php
namespace AR\CustomModule\Block;
class CustomBlock extends \Magento\Framework\View\Element\Template
{
    protected $_registry;

    public function __construct(
        \Magento\Backend\Block\Template\Context $context,       
        \Magento\Framework\Registry $registry,
        array $data = []
    )
    {       
        $this->_registry = $registry;
        parent::__construct($context, $data);
    }

    public function _prepareLayout()
    {
        return parent::_prepareLayout();
    }

    public function getCurrentCategory()
    {       
        return $this->_registry->registry('current_category');
    }

    public function getCurrentProduct()
    {       
        return $this->_registry->registry('current_product');
    }   

}
?>

Impression des données produit actuelles dans votre fichier modèle (custom.phtml)

if ($currentProduct = $block->getCurrentProduct()) {
    echo $currentProduct->getName() . '<br />';
    echo $currentProduct->getSku() . '<br />';
    echo $currentProduct->getId() . '<br />';       
}
Abdul
la source
Ça fonctionne super bien! Pourriez-vous expliquer ce registre ?? existe-t-il un guide du développeur sur ce domaine ??
ming
2
Existe-t-il une autre méthode pour obtenir l'ID du produit en dehors du registre?
Sushivam
0
<?php 
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->get('Magento\Framework\Registry')->registry('current_product');//get current product
echo $product->getId();
echo $product->getName();
?>

Cela fonctionne pour moi.

.

Deepak Bhatta
la source
n'utilisez pas directement le gestionnaire d'objets
Lorenzo
0
<?php
     $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
     $productid = $this->getRequest()->getParam('id');                                       
     $product = $objectManager->create('Magento\Catalog\Model\Product')->load($productid);
     echo $product;
?>                                                                          

utilisez ce code pour obtenir l'identifiant actuel du produit

chris
la source
0

Tu pourrais essayer $product = $this->abstractProduct->getProduct();

avec \Magento\Catalog\Block\Product\AbstractProduct $abstractProduct

travaillé pour moi :)

fudu
la source
sa ne fonctionne pas pour la page de liste des produits
Amit Naraniwal
-3

Essaye ça:

<?php  
   $productId = 8;
   $objectManager =  \Magento\Framework\App\ObjectManager::getInstance();
   $currentproduct = $objectManager->create('Magento\Catalog\Model\Product')->load($productId);
   echo $currentproduct->getName(); 
?>
Dandy
la source
Salut, merci pour la réponse! Je pense avoir mal formulé ma question. Mes modules actuels ne sont qu'un complément d'informations sur le produit, ce que je voulais vraiment dire, c'est comment obtenir l'ID du produit de la page actuelle? par exemple, dans « localhost / test / produit a.html » Comment puis - je récupérer l'identifiant pour ce produit particulier
ming
je reçois la classe 'Magento \ Framework \ App \ ObjectManager introuvable
Sushivam
im essayant d'obtenir dans mon modèle personnalisé comme: $ productId = 1; $ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance (); $ currentproduct = $ objectManager-> create ('Vendor \ Module \ Model \ Queue') -> load ($ productId); echo '<pre>'; print_r ($ currentproduct-> getEntityId ()); die; je reçois un appel à dispatch () sur null ..pls help
Sushivam
Comment obtenir dynamiquement $ productId = 8;
Sushivam