Magento2: Cách nhận id sản phẩm cho mô-đun tùy chỉnh của tôi


11

Tôi chưa quen với magento2 và hiện tại tôi đang xây dựng một mô-đun tùy chỉnh và tôi muốn lấy sản phẩm ID/SKUtừ danh mục. Tôi đang cố gắng gọi bằng một hàm nằm trong thư mục Chặn. Xin tư vấn!

Câu trả lời:


35

Thử cái này xem sao:

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

HOẶC LÀ

Thêm mã dưới đây trong tập tin khối của bạn.

ví dụ 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');
    }   

}
?>

In dữ liệu sản phẩm hiện tại trong tệp mẫu (custom.phtml) của bạn

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

Công việc này như một cái duyên vậy! Bạn có phiền giải thích về đăng ký này ?? Có hướng dẫn của nhà phát triển về lĩnh vực này không ??
ming

2
Có phương pháp thay thế nào để lấy id sản phẩm ngoài registry không?
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();
?>

Điều này làm việc cho tôi.

.


không sử dụng trình quản lý đối tượng trực tiếp
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;
?>                                                                          

sử dụng mã này để lấy id sản phẩm hiện tại


0

Bạn có thể thử $product = $this->abstractProduct->getProduct();

với \Magento\Catalog\Block\Product\AbstractProduct $abstractProduct

đã làm cho tôi :)


nó không hoạt động cho trang danh sách sản phẩm
Amit Naraniwal

-3

Thử cái này xem sao:

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

Hey, cảm ơn bạn đã trả lời! Tôi nghĩ rằng tôi đã đặt câu hỏi sai. Các mô-đun hiện tại của tôi chỉ là một phần bổ sung thông tin cho sản phẩm, điều tôi thực sự muốn nói là làm thế nào để tôi có được ID của sản phẩm trang hiện tại? ví dụ, trong "localhost / test / sản phẩm-A.html", làm cách nào tôi có thể truy xuất id cho sản phẩm cụ thể này
ming

tôi nhận được Class 'Magento \ Framework \ App \ ObjectManager
Sushivam

tôi đang cố gắng để có được trong Mô hình tùy chỉnh của mình là: $ productId = 1; $ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance (); $ currentproduct = $ objectManager-> tạo ('Nhà cung cấp \ Mô-đun \ Mô hình \ Hàng đợi') -> tải ($ sản phẩmId); echo '<pre>'; print_r ($ currentproduct-> getEntityId ()); die; tôi nhận được cuộc gọi đến công văn () trên null .. giúp đỡ
Sushivam

Làm thế nào để tự động lấy $ productId = 8;
Sushivam
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.