Я создал наблюдателя для события: sales_order_place_after
Я могу получить данные клиента из customerId
<?php
namespace MyCompany\MyModule\Observer\Sales\Order;
use Magento\Framework\Event\ObserverInterface;
class Salesrep implements ObserverInterface
{
public function __construct(
\Magento\Customer\Api\CustomerRepositoryInterface $customerRepositoryInterface
){
$this->_customerRepositoryInterface = $customerRepositoryInterface;
}
public function execute(\Magento\Framework\Event\Observer $observer)
{
$order = $observer->getEvent()->getOrder();
$customer = $this->_customerRepositoryInterface->getById($order->getCustomerId());
$salesrep = $customer->getCustomAttribute('salesrep')->getValue();
$order->setSalesrep($salesrep);
}
}
В случае, если клиент заказывает в качестве гостя, как я могу получить информацию о клиенте по электронной почте?
Я также пытался
$customer = $this->_customerRepositoryInterface->getByEmail($order->getCustomerEmail());
но это возвращает ошибку.
Вскоре после публикации этого вопроса я смог разобраться.
Просто нужно изменить эту строку
$customer = $this->_customerRepositoryInterface->getById($order->getCustomerId());
к
$customer = $this->_customerRepositoryInterface->get($order->getCustomerEmail(), $websiteId = null);
Других решений пока нет …