Este é o meu 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());
}
}
Como posso obter a imagem e o URL do produto no item?
magento2
product
event-observer
product-images
Ramkishan Suthar
fonte
fonte
Respostas:
Dessa forma, pode não ser a melhor maneira de obter uma imagem do produto.
Injete
\Magento\Catalog\Api\ProductRepositoryInterfaceFactory
em nosso construtor.Podemos obter a imagem:
fonte
pub/media/catalog/product
Se você deseja o URL de front-end publicado / cache de uma imagem para uma visualização de loja específica (como eu fiz), isso está funcionando para mim:
Então, sempre que você precisar obter o URL do front-end da imagem:
Você pode selecionar outros tipos de imagens além
product_thumbnail_image
: consultemagento/theme-frontend-luma/etc/view.xml
uma lista de imagens de produtos disponíveis ou crie suas próprias em umview.xml
arquivo.fonte
Se você precisar retornar um URL do produto, ele deve se parecer com o seguinte:
fonte
Foi assim que eu fiz. é bastante eficiente e limpo:
1) Primeiro, você precisa injetar as seguintes classes:
2) Crie um método getImageUrl com o código abaixo:
Nota: O código "appEmulation" é necessário apenas quando você faz essa chamada pelo administrador ou por uma API . Caso contrário, você receberá o erro abaixo (ou similar):
3) Chame o getImageUrl passando o objeto do produto e o tipo de imagem que você deseja (com base no seu arquivo view.xml )
fonte
Para obter o URL da imagem personalizada, usei esse código. Portanto, se a imagem não sair, ela carregará a imagem do tema padrão.
fonte