Не могу получить электронную почту клиента для отправки электронной почты в hookActionOrderStatusUpdate - PullRequest
0 голосов
/ 10 апреля 2019

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

Это код перехвата ActionOrderStatusUpdate

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

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 Ответ

0 голосов
/ 18 апреля 2019

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

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

Вот как должен выглядеть ваш крючок:

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

    if($params['newOrderStatus']->id == 3 && 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
                );
            }
        }
    }
}
...