Не удается получить электронное письмо клиента для отправки электронного письма в hookActionOrderStatusUpdate

#prestashop-1.6

#prestashop-1.6

Вопрос:

Я пишу модуль для того, чтобы отправлять клиенту электронное письмо, когда он покупает конкретный продукт. Модуль работает нормально, если я устанавливаю фиксированный адрес электронной почты, но когда я пытаюсь использовать переменную customer email , это не так.

Это код крючка hookActionOrderStatusUpdate

Есть идеи? Спасибо

 public function hookActionOrderStatusUpdate($params)
{
    $cart = $params['cart'];

    if($params['newOrderStatus']->id == 3) // cancelado
    {
        $prods = $cart->getProducts(true);
        $customer = $params['customer'];

        error_log("Test");
        error_log(' $customer->email');
        error_log($customer->email);

        foreach($prods as $prod)
        {
            if($prod['id_product'] == 1054)  //your category ID
            {
                Mail::Send(
                    (int)(Configuration::get('PS_LANG_DEFAULT')), // defaut language id
                    'bolsones', // email template file to be use
                    'Te queremos contar acerca de nuestros Bolsones', // email subject
                    array(
                       '{firstname}' => $customer->firstname,
                    ),
                    $customer->email, // receiver email address 
                    $customer->firstname, //receiver name
                    NULL, //from email address
                    NULL  //from name
                );
            }
        }
    }
}
  

Ответ №1:

Это связано с тем, что customer индекс в $params массиве не существует.

Вы должны создать экземпляр вашего объекта customer из cart индекса.

Вот как должен выглядеть ваш хук :

 public function hookActionOrderStatusUpdate($params)
{
    $cart     = $params['cart'];
    $customer = new Customer($cart->id_customer);

    if($params['newOrderStatus']->id == 3 amp;amp; Validate::isLoadedObject($customer)) // cancelado
    {
        $prods = $cart->getProducts(true);

        foreach($prods as $prod)
        {
            if($prod['id_product'] == 1054)  //your category ID
            {
                Mail::Send(
                    (int)(Configuration::get('PS_LANG_DEFAULT')), // defaut language id
                    'bolsones', // email template file to be use
                    'Te queremos contar acerca de nuestros Bolsones', // email subject
                    array(
                        '{firstname}' => $customer->firstname,
                    ),
                    $customer->email, // receiver email address 
                    $customer->firstname, //receiver name
                    NULL, //from email address
                    NULL  //from name
                );
            }
        }
    }
}