#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
);
}
}
}
}