마 젠토 2-제품 정보를 검색하는 방법


18

내가 좋아하는 기능을 사용하려면 getName(), getPrice()마 젠토 2에서 제품 정보를 검색하는 등 제품을.

누구든지 내가 어떻게 그것을 달성 할 수 있는지 보여줄 수 있습니까?


@ JJohn, 답변 아래에서 작동합니까? 동의하면 다른 사용자에게 유용합니다. 알려주지 않으면 솔루션을 제공 할 수 있습니다.
Bojjaiah

답변:


22

Magento 2에서는이를 위해 서비스 계층을 사용하도록 제안했습니다. \Magento\Catalog\Model\ProductRepository::getByIdID로 제품을 얻는 방법을 사용하십시오


1
대신 \ Magento \ Catalog \ Api \ ProductRepositoryInterface :: getById를 사용해야합니다.
Thiago Lima


12

Magento 2는 Factories모든 모델을로드 할 때 사용 하는 것이 좋습니다 . 방법은 다음과 같습니다.

  1. 수업 위에이 줄을 추가하십시오.

    use Magento\Catalog\Model\ProductFactory;
  2. 이제 클래스 속성을 만듭니다.

    protected $productFactory;
  3. 생성자에서 종속성을 추가하십시오.

    public function __construct(
       ProductFactory $productFactory
    ) {
       $this->productFactory = $productFactory;
    }
  4. 이제 아래와 같이 제품을로드하십시오 :

    $_product = $this->productFactory->create()->load(<product_id>);

마 젠토 2.1.7에는 클래스 \ 젠토 \ 카탈로그 \ 모델 \ ProductFactory 없다
샤히 hajir

2
대부분의 팩토리 클래스는 모듈에 없습니다. var / generation으로 생성되어 객체 관리자를 사용하여 클래스를 인스턴스화합니다. 어쨌든 제품을 적재하기 위해 공장을 사용해서는 안됩니다. 다른 사람들이 제안한대로 \ Magento \ Catalog \ Api \ ProductRepositoryInterface를 사용하십시오. 또는 최소한 Magento \ Catalog \ Model \ ProductRepository :: getById ($ id)를 사용하십시오.
Frank

ProductRepository를 사용하면 팩토리를 사용하는 등의 새로운 객체가 생성되지 않습니다.
Raul Sanchez


6

더 많은 마 젠토 방식을 달성하는 방법은 핵심 코드의 대부분에서 다르게 수행하기 때문에 제품 리포지토리를 사용하는 것이므로 구분하기가 어렵습니다.

use Magento\Catalog\Model\ProductRepository;

protected $productRepository;

public function __construct(
   ProductRepository $productRepository
) {
   $this->productRepository = $productRepository;
}

public function getMyProduct($productId)
{
    return $this->productRepository->getById($productId);
}

정답, 정답, 정답
Matthias Kleine


0

이를 위해서는 아래에서 사용해야합니다

사용하다 \Magento\Catalog\Model\Resource\Product\CollectionFactory

$prod_id = "Your product id goes here";
$om         =   \Magento\Framework\App\ObjectManager::getInstance();
$pdata =   $om->create('Magento\Catalog\Model\Product')->load($prod_id);

-1

아래와 같이 제품보기 페이지에서 기능을 사용하여 제품 세부 정보를 가져 왔습니다.

여기 Sm / Sawyer가 제 테마입니다.

$_config = $this->helper('Sm\Sawyer\Helper\Data');
$productId = $this->getProduct()->getId();
$name = $this->getProduct()->getName();
$stock1 = $this->getProduct()->getQty();
$price = $this->getProduct()->getPrice();

매우 나쁜 답변
LucScu

도움이되지 않음-혼란
Matthias Kleine
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.