I am trying to save customer custom attribute value at customer_save_after observer. but observer script is not working at observer but that script working at contoller.
events.xml
<event name="customer_save_after">
<observer name="VestricsM2_Connector_Customer_Save_After" instance="VestricsM2\Connector\Observer\CustomerSaveAfter" /> </event>
Observer/CustomerSaveAfter.php
protected $customerRepository;
protected $_logger;
/**
* @param \Magento\Framework\ObjectManagerInterface $objectManager
*/
public function __construct(
\Magento\Framework\ObjectManagerInterface $objectManager,
\Psr\Log\LoggerInterface $logger,
\Magento\Customer\Api\CustomerRepositoryInterface $customerRepository
) {
$this->_objectManager = $objectManager;
$this->_logger = $logger;
$this->customerRepository = $customerRepository;
}
/**
* customer register event handler
*
* @param \Magento\Framework\Event\Observer $observer
* @return void
*/
public function execute(\Magento\Framework\Event\Observer $observer)
{
$customer = $observer->getEvent()->getCustomer();
if($customer->getId()){
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$customerRepository = $objectManager->create('Magento\Customer\Model\Customer')->load('1');
$customerRepository->setUpdatedinsap('1');
$customerRepository->save();
/* $writer = new \Zend\Log\Writer\Stream(BP .'/var/log/observer-log-file.log');
$logger = new \Zend\Log\Logger();
$logger->addWriter($writer);
$logger->info($customerRepository->getData());*/
}
Best Answer
Using CustomerRepositoryInterface you can save your custom customer attribute value,
Save your customer attribute value using
try/cache
block,