Magento2 : 사용자 정의 모듈에 제품 ID를 얻는 방법


11

magento2를 처음 사용하고 있으며 현재 사용자 정의 모듈을 작성 중이며 ID/SKU카탈로그 에서 제품을 가져오고 싶습니다 . Block 폴더에있는 함수를 사용하여 호출하려고합니다. 조언 해주세요!

답변:


36

이 시도:

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

이것은 매력처럼 작동합니다! 이 레지스트리에 대해 설명 하시겠습니까? 이 영역에 대한 개발자 안내서가 있습니까?
ming

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

나를 위해 일했다 :)


제품 목록 페이지에서 작동하지 않음
Amit Naraniwal

-3

이 시도:

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

답장 주셔서 감사합니다! 내 질문을 잘못 표현한 것 같습니다. 내 현재 모듈은 제품에 대한 정보를 추가하는 것입니다. 실제로 의미하는 것은 현재 페이지 제품의 ID를 어떻게 얻습니까? 예를 들어, 내가이 특정 제품에 대한 ID를 검색 할 수있는 방법 "로컬 호스트 / 시험 / 제품 A.html"에

클래스 'Magento \ Framework \ App \ ObjectManager를 찾을 수 없음
Sushivam

내 사용자 정의 모델을 다음과 같이 얻으려고합니다 : $ productId = 1; $ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance (); $ currentproduct = $ objectManager-> 만들기 ( 'Vendor \ Module \ Model \ Queue')-> load ($ productId); echo '<pre>'; print_r ($ currentproduct-> getEntityId ()); die; null ..pls help에 dispatch ()를 호출합니다.
Sushivam

$ productId = 8을 동적으로 얻는 방법;
Sushivam
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.