【问题标题】:How to get product information from product id in magento2 or magento2.0?如何从 magento2 或 magento2.0 中的产品 id 获取产品信息?
【发布时间】:2016-04-25 23:22:11
【问题描述】:

如何在 magento2 中按产品 ID 获取所有产品详细信息?我想在主页上显示带有图像的单个产品详细信息。任何帮助将不胜感激。

【问题讨论】:

    标签: magento magento2 magento-2.0


    【解决方案1】:

    为此,最好在 Magento 2 中使用Service Layer

    protected $_productRepository;
    
    public function __construct(
        ...
        ...
        \Magento\Catalog\Model\ProductRepository $productRepository,
        ...
    )
    {
        $this->_productRepository = $productRepository;
        ...
        ...
    }
    
    public function getProductById($id)
    {
        return $this->_productRepository->getById($id);
    }
    

    【讨论】:

      【解决方案2】:

      试试下面的代码。它可能会帮助你。

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

      【讨论】:

      • 你不应该使用对象管理器,除非你真的有它的理由。更好地使用依赖注入,请参阅文档:devdocs.magento.com/guides/v2.0/extension-dev-guide/…
      • 你是绝对正确的。感谢您的宝贵回复。
      • 如何在没有静态值的情况下动态获取产品ID
      【解决方案3】:
      use Magento\Catalog\Model\ProductFactory;
      /**
       * @var ProductFactory
       */
      protected $_modelProductFactory;
      public function __construct(
          ...      
          ProductFactory $modelProductFactory,  
          ...
      )
      {           
          $this->_modelProductFactory = $modelProductFactory; 
          ...
      }
      
      public function getProductInformation($productId)
      {
          return $this->_modelProductFactory->create()->load($productId);
      }
      

      【讨论】:

        【解决方案4】:

        如果您不想只获取有关产品的几个属性并希望避免加载产品,则可以使用集合来实现。只需注入课程\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory 像这样:

        public function __construct(
            Context = $context,
            //...
            \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $collectionFactory,
            //...
            array $data = []
        ) {
            $this->_collection = $collectionFactory();
            parent::__construct($context, $data);   
        }
        

        然后像这样创建一个简单的集合:

        $productID = 10;
        $product = $this->_collection
            ->create()
            ->addAttributeToSelect(['some_attribute'])
            ->addAttributeToFilter('entity_id', $productID)
            ->getFirstItem();
        return $product->getSomeAttribute();
        

        【讨论】:

          【解决方案5】:
          <?php 
          $productId = 10;
          $objectManager =  \Magento\Framework\App\ObjectManager::getInstance();
          $currentproduct = $objectManager->create('Magento\Catalog\Model\Product')- 
          >load($productId);
          ?>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-03-09
            • 2015-01-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-01-01
            • 1970-01-01
            相关资源
            最近更新 更多