Marque ahora @SiarheyUchukhlebau con la respuesta correcta ....
P0lT10n
Respuestas:
22
Debe usar Magento\Catalog\Model\ProductRepositoryo Magento\Catalog\Model\ResourceModel\Product\Collectionsegún sus necesidades. Puede usar ambos métodos para obtener instancias de productos con todos los datos.
hola @siarhey, obtengo un resultado vacío con tu código. ¿Tienes algún consejo al respecto? ¿Podría ser porque estoy tratando de recuperar la lista de una tarea cron?
Lorenzo S
@LorenzoS Hola, ¿qué ejemplo estás usando 1 o 2? ¿Existe algún producto cuando elimina todos los filtros / condiciones?
Siarhey Uchukhlebau
¿Cómo obtener esta pestaña "Variables" con el árbol de objetos en tu captura de pantalla?
gran respuesta, @SiarheyUchukhlebau, pero ¿a qué te refieres? Si solo necesita datos del producto, use la primera clase. Si necesita obtener las instancias del producto, use la segunda clase.
Yehia A.Salam
2
Usando una llamada a la API REST:
https://{host}/rest/V1/products/?searchCriteria=
Recupera todos los productos. "searchCriteria" es un parámetro requerido, pero puede dejarse en blanco, como se indicó anteriormente.
La respuesta más votada está funcionando, pero me gustaría mencionar que al inyectar una implementación del repositorio del producto directamente causará la violación del principio del contrato de servicio y eso es algo que Magento quiere que los desarrolladores corrijan. Debería inyectar en \Magento\Catalog\Api\ProductRepositoryInterface $productRepositorylugar de su implementación, que es \Magento\Catalog\Model\ProductRepository $productRepository. De esa manera, tendrá un espacio para la capacidad de actualización futura. La conclusión es utilizar contratos de servicio tanto como sea posible.
Respuestas:
Debe usar
Magento\Catalog\Model\ProductRepository
oMagento\Catalog\Model\ResourceModel\Product\Collection
según sus necesidades. Puede usar ambos métodos para obtener instancias de productos con todos los datos.Ejemplo 1 (repositorio):
Resultado:
Ejemplo 2 (Colección):
Resultado:
fuente
Usando una llamada a la API REST:
Recupera todos los productos. "searchCriteria" es un parámetro requerido, pero puede dejarse en blanco, como se indicó anteriormente.
fuente
La respuesta más votada está funcionando, pero me gustaría mencionar que al inyectar una implementación del repositorio del producto directamente causará la violación del principio del contrato de servicio y eso es algo que Magento quiere que los desarrolladores corrijan. Debería inyectar en
\Magento\Catalog\Api\ProductRepositoryInterface $productRepository
lugar de su implementación, que es\Magento\Catalog\Model\ProductRepository $productRepository
. De esa manera, tendrá un espacio para la capacidad de actualización futura. La conclusión es utilizar contratos de servicio tanto como sea posible.fuente
Puede hacerlo a través de la solicitud de API. Echa un vistazo a la API de m2 predeterminada
piensa que tu mejor sesión es catalogueProductRepositoryV1
fuente