Este es mi observador:
public function execute(\Magento\Framework\Event\Observer $observer)
{
$orderIds = $observer->getEvent()->getOrderIds();
$order = $this->_orderRepositoryInterface->get($orderIds[0]);
$items =$order->getAllVisibleItems();
$productQuantity = array();
$productPrice = array();
$productName = array();
$productIds = array();
foreach($items as $item) {
$productIds[]= $item->getProductId();
$productName[]= $item->getSku();
$productPrice[] = $item->getPrice();
$productQuantity[]= floor($item->getQtyOrdered());
}
}
¿Cómo puedo obtener la imagen del producto y la URL del producto del artículo?
magento2
product
event-observer
product-images
Ramkishan Suthar
fuente
fuente
Respuestas:
Es posible que esta no sea la mejor manera de obtener una imagen del producto.
Inyectar
\Magento\Catalog\Api\ProductRepositoryInterfaceFactory
en nuestro constructor.Podemos obtener la imagen:
fuente
pub/media/catalog/product
Si desea la URL de frontend publicada / caché de una imagen para una vista de tienda específica (como lo hice), esto está funcionando para mí:
Luego, donde sea que necesite obtener la URL de la interfaz de la imagen:
También puede seleccionar otros tipos de imágenes
product_thumbnail_image
: consulte lamagento/theme-frontend-luma/etc/view.xml
lista de imágenes de productos disponibles o cree las suyas propias en unview.xml
archivo.fuente
Si necesita devolver la URL de un producto, debería verse así:
fuente
Así lo hice yo. Es bastante eficiente y limpio:
1) Primero, debe inyectar las siguientes clases:
2) Luego, crea un método getImageUrl con el siguiente código:
Nota: El código "appEmulation" solo es necesario cuando realiza esta llamada desde el administrador o para una API . De lo contrario, obtendrá el siguiente error (o similar):
3) Llame a getImageUrl pasando el objeto del producto y el tipo de imagen que desea (según su archivo view.xml )
fuente
Para obtener una URL de imagen personalizada, utilicé este código. Entonces, si la imagen no sale, cargará la imagen de tema predeterminada.
fuente