Marque agora @SiarheyUchukhlebau, responda como correto .... #
P0lT10n
Respostas:
22
Você deve usar Magento\Catalog\Model\ProductRepositoryou de Magento\Catalog\Model\ResourceModel\Product\Collectionacordo com suas necessidades. Você pode usar os dois métodos para obter instâncias do produto com todos os dados.
oi @siarhey, estou recebendo um resultado vazio com o seu código. Você tem alguma dica sobre isso? Poderia ser por causa de que estou tentando recuperar a lista de uma tarefa cron?
Lorenzo S
@ LorenzoS Oi, qual exemplo você está usando 1 ou 2? Existe algum produto quando você remove todos os filtros / condições?
Siarhey Uchukhlebau
Como obter essa guia "Variáveis" com a árvore de objetos na sua captura de tela?
ótima resposta, @SiarheyUchukhlebau, mas o que você quer dizer com Se você precisa apenas de dados do produto, use a primeira classe. Se você precisar obter as instâncias do produto - use segunda classe.
Yehia A.Salam
2
Usando uma chamada de API REST:
https://{host}/rest/V1/products/?searchCriteria=
Recupera todos os produtos. "searchCriteria" é um parâmetro obrigatório, mas pode ser deixado em branco, como acima.
A resposta mais votada está funcionando, mas eu gostaria de mencionar que a injeção direta de uma implementação de repositório de produtos causará a violação do princípio do contrato de serviço e isso é algo que o Magento deseja que os desenvolvedores corrijam. Você deve injetar em \Magento\Catalog\Api\ProductRepositoryInterface $productRepositoryvez da implementação que é \Magento\Catalog\Model\ProductRepository $productRepository. Dessa forma, você terá um espaço para a capacidade de atualização futura. Bottom line é usar contratos de serviço, tanto quanto possível.
Respostas:
Você deve usar
Magento\Catalog\Model\ProductRepository
ou deMagento\Catalog\Model\ResourceModel\Product\Collection
acordo com suas necessidades. Você pode usar os dois métodos para obter instâncias do produto com todos os dados.Exemplo 1 (Repositório):
Resultado:
Exemplo 2 (coleção):
Resultado:
fonte
Usando uma chamada de API REST:
Recupera todos os produtos. "searchCriteria" é um parâmetro obrigatório, mas pode ser deixado em branco, como acima.
fonte
A resposta mais votada está funcionando, mas eu gostaria de mencionar que a injeção direta de uma implementação de repositório de produtos causará a violação do princípio do contrato de serviço e isso é algo que o Magento deseja que os desenvolvedores corrijam. Você deve injetar em
\Magento\Catalog\Api\ProductRepositoryInterface $productRepository
vez da implementação que é\Magento\Catalog\Model\ProductRepository $productRepository
. Dessa forma, você terá um espaço para a capacidade de atualização futura. Bottom line é usar contratos de serviço, tanto quanto possível.fonte
Você pode fazer isso através da solicitação da API. Dê uma olhada na API padrão m2
acho que sua melhor foto é catalogProductRepositoryV1
fonte