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!

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 />';       
}

Ç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.

.


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


0

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

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

travaillé pour moi :)


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(); 
?>

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.