0

upon adding my observer, I got error 500 when I'm trying to complete shipping process. What I want to achieve is, I want to send a review request after the shipment is done.I've started using Magento for about a month ago, that's why I don't know if I made an error on Observer, events.xml or it just doesn't work. I've been doing this for about three days, please help.

Vendor name: Lns
Module Name: ReviewRequest

Review.php

<?php
 
namespace Lns\ReviewRequest\Observer;
 
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
 
class Review implements ObserverInterface
{
    protected $transportBuilder;
    protected $storeManager;
    protected $logger;
    
    public function __construct(
        \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
        TransportBuilder $transportBuilder,
        StoreManagerInterface $storeManager,
        LoggerInterface $logger

    ) {
        $this->transportBuilder = $transportBuilder;
        $this->storeManager = $storeManager;
        $this->logger = $logger;
    }
    
    /**
     * Below is the method that will fire whenever the event runs!
     *
     * @param Observer $observer
     */

    public function execute(Observer $observer)
    {

        $store = $this->storeManager->getStore();

        $templateParams = ['store' => $store, 'customer' => $customer, 'administrator_name' => $receiverInfo['name']];

        $transport = $this->transportBuilder
                        ->setTemplateIdentifier('Entrelabel Add Review')
                        ->setTemplateOptions(['area' => 'frontend', 'store' => $store->getId()])
                        ->addTo($receiverInfo['email'], $receiverInfo['name'])
                        ->setTemplateVars($templateParams)
                        ->setFrom('general')
                        ->getTransport();

        try {
            // Send an email
            $transport->sendMessage();
        } catch (\Exception $e) {
            // Write a log message whenever get errors
            $this->logger->critical($e->getMessage());
        }
        return var_dump($e);
    }
}

Events.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="sales_order_shipment_save_after">
        <observer name="reviewRequest" instance="Lns\ReviewRequest\Observer\Review" />
    </event>
</config>

1 Answers1

0

add before class start

use Magento\Framework\Mail\Template\TransportBuilder 
use Magento\Store\Model\StoreManagerInterface

and check log files in var folder

MageDev
  • 271
  • 1
  • 7
  • 27