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
)

因此对于客户线程状态,您可以使用 actionObjectCustomerThreadUpdateBeforeactionObjectCustomerThreadUpdateAfter 挂钩来检测状态是否已更改并发送电子邮件。

编辑

然后您会在管理客户线程控制器中找到像这样的宝石。

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() 方法才能添加您的代码。