Magento2:カスタムモジュールに製品IDを取得する方法


11

私はmagento2を初めて使用し、現在カスタムモジュールをID/SKU作成しています。カタログから製品を入手したいと考えています。Blockフォルダにある関数を使用して呼び出そうとしています。お知らせ下さい!

回答:


35

これを試して:

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

または

ブロックファイルに以下のコードを追加します。

例えば 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');
    }   

}
?>

現在の製品データをテンプレート(custom.phtml)ファイルに印刷する

if ($currentProduct = $block->getCurrentProduct()) {
    echo $currentProduct->getName() . '<br />';
    echo $currentProduct->getSku() . '<br />';
    echo $currentProduct->getId() . '<br />';       
}

これは魅力のように機能します!このレジストリについて説明してもよろしいですか?この分野の開発者ガイドはありますか?

2
レジストリとは別に製品IDを取得する別の方法はありますか?
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();
?>

これでうまくいきます。


オブジェクトマネージャを直接使用しないでください
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;
?>                                                                          

このコードを使用して現在の製品IDを取得します


0

あなたは試すことができます $product = $this->abstractProduct->getProduct();

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

私のために働いた:)


製品リストページでは機能しません
アミットナラニワル

-3

これを試して:

<?php  
   $productId = 8;
   $objectManager =  \Magento\Framework\App\ObjectManager::getInstance();
   $currentproduct = $objectManager->create('Magento\Catalog\Model\Product')->load($productId);
   echo $currentproduct->getName(); 
?>

ねえ、返信ありがとう!私は私の質問を間違って言いました。私の現在のモジュールは製品の追加情報にすぎませんが、私が実際に意味しているのは、現在のページの製品のIDを取得する方法ですか?たとえば、どのように私は、この特定の製品のIDを取得することができます「localhostの/テスト/製品A.html」で

Class 'Magento \ Framework \ App \ ObjectManager not found
Sushivam

次のようにカスタムモデルを取得しようとしています:$ productId = 1; $ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance(); $ currentproduct = $ objectManager-> create( 'Vendor \ Module \ Model \ Queue')-> load($ productId); echo '<pre>'; print_r($ currentproduct-> getEntityId()); die; nullでdispatch()を呼び出します。plsヘルプ
Sushivam

$ productId = 8を動的に取得する方法。
Sushivam
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.