PrestaShop:挂钩关闭客户线程
PrestaShop: hook on close customer thread
我需要制作一个模块,以便在客户线程关闭时发送电子邮件。为此,我正在考虑在更新客户线程时使用挂钩,然后我可以检查状态并执行我需要的操作。
使用 validator.prestashop.com I found the actionObjectCustomerThreadAddAfter
. I would like to know if there is a similar hook to when I close or update a Thread. The only hook list I found so far in this one 但即使是我发现的这个挂钩也不存在。
对于扩展 ObjectModel
并使用其 add()
、update()
、delete()
或 save()
方法的每个 class,您有以下内容挂钩可供使用。
actionObjectAddBefore
actionObjectNameAddBefore
actionObjectAddAfter
actionObjectNameAddAfter
actionObjectUpdateBefore
actionObjectNameUpdateBefore
actionObjectUpdateAfter
actionObjectNameUpdateAfter
actionObjectDeleteBefore
actionObjectNameDeleteBefore
actionObjectDeleteAfter
actionObjectNameDeleteAfter
将 Name
替换为 class 的名称。所有这些挂钩也将对象本身作为参数传递。
array(
'object' => $this
)
因此对于客户线程状态,您可以使用 actionObjectCustomerThreadUpdateBefore
和 actionObjectCustomerThreadUpdateAfter
挂钩来检测状态是否已更改并发送电子邮件。
编辑
然后您会在管理客户线程控制器中找到像这样的宝石。
if ($id_status = (int)Tools::getValue('setstatus')) {
$status_array = array(1 => 'open', 2 => 'closed', 3 => 'pending1', 4 => 'pending2');
Db::getInstance()->execute('
UPDATE '._DB_PREFIX_.'customer_thread
SET status = "'.$status_array[$id_status].'"
WHERE id_customer_thread = '.(int)$id_customer_thread.' LIMIT 1
');
}
这意味着它不使用对象来保存状态,而是直接调用数据库,因此挂钩永远不会执行。
您必须覆盖 AdminCustomerThreadsController
及其 postProcess()
方法才能添加您的代码。
我需要制作一个模块,以便在客户线程关闭时发送电子邮件。为此,我正在考虑在更新客户线程时使用挂钩,然后我可以检查状态并执行我需要的操作。
使用 validator.prestashop.com I found the actionObjectCustomerThreadAddAfter
. I would like to know if there is a similar hook to when I close or update a Thread. The only hook list I found so far in this one 但即使是我发现的这个挂钩也不存在。
对于扩展 ObjectModel
并使用其 add()
、update()
、delete()
或 save()
方法的每个 class,您有以下内容挂钩可供使用。
actionObjectAddBefore
actionObjectNameAddBefore
actionObjectAddAfter
actionObjectNameAddAfter
actionObjectUpdateBefore
actionObjectNameUpdateBefore
actionObjectUpdateAfter
actionObjectNameUpdateAfter
actionObjectDeleteBefore
actionObjectNameDeleteBefore
actionObjectDeleteAfter
actionObjectNameDeleteAfter
将 Name
替换为 class 的名称。所有这些挂钩也将对象本身作为参数传递。
array(
'object' => $this
)
因此对于客户线程状态,您可以使用 actionObjectCustomerThreadUpdateBefore
和 actionObjectCustomerThreadUpdateAfter
挂钩来检测状态是否已更改并发送电子邮件。
编辑
然后您会在管理客户线程控制器中找到像这样的宝石。
if ($id_status = (int)Tools::getValue('setstatus')) {
$status_array = array(1 => 'open', 2 => 'closed', 3 => 'pending1', 4 => 'pending2');
Db::getInstance()->execute('
UPDATE '._DB_PREFIX_.'customer_thread
SET status = "'.$status_array[$id_status].'"
WHERE id_customer_thread = '.(int)$id_customer_thread.' LIMIT 1
');
}
这意味着它不使用对象来保存状态,而是直接调用数据库,因此挂钩永远不会执行。
您必须覆盖 AdminCustomerThreadsController
及其 postProcess()
方法才能添加您的代码。