Пытаюсь добавить логический хук в suiteCRM при создании или обновлении задачи

Это моя первая попытка кодирования для SugarCRM/suiteCRM.

Должен сказать, что я программирую для Wordpress уже почти 10 лет, но теперь я полностью потерялся, когда начинаю копаться в suiteCRM.

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

Представьте, что я создаю задачу на сегодня, 7 июля, связанную с клиентом, которого я использую для посещения каждые 2 месяца, поэтому в учетных записях есть поле под названием «Частота посещения». Я хотел бы добавить будущую дату (7 июля + 60 дней = примерно 7 сентября) в поле задачи «Дата будущего посещения», чтобы я мог использовать ее для создания этой конкретной будущей задачи через рабочий процесс.

Что я пытаюсь сделать, так это рассчитать поле в задачах (будущая дата посещения), которое равно количеству дней в поле модуля учетных записей (частота посещения), добавленному к собственному полю даты задачи.

Я смог заставить его работать, используя следующий макет:

Внутри \custom\modules\Tasks\logic_hooks.php

<?php

$hook_version = 1; 
$hook_array['before_save'] = Array();

$hook_array['before_save'][] = Array(
    1, //Processing index. For sorting the array.
    'future_task_date_on_task_creation', //Label. A string value to identify the hook.
    'custom/modules/Tasks/future_visit_date.php', //The PHP file where your class is located.
    'before_save_class', //The class the method is in.
    'future_visit_date' //The method to call.
);

?>

Внутри \custom\modules\Tasks\future_visit_date.php

<?php

if (!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');

class before_save_class {

    function future_visit_date($bean, $event, $arguments) {
        $bean->rhun_fecha_sig_c = date("Y-m-d H:i:s", $date);
    }

}

?>

При такой настройке дата будущего посещения заполняется расчетной датой.

Я также читал, что эта установка не рекомендуется и что я должен использовать Extension Framework и поместить первый файл по этому пути:

/custom/Extension/modules/Tasks/Ext/LogicHooks/<file>.php

Но я не могу заставить его работать.

Нужно ли создавать папку LogicHooks, если ее там нет? Какое имя файла я должен присвоить этому файлу? Должен ли я изменить что-то еще внутри кода?


person Ramon Ruiz    schedule 07.07.2016    source источник


Ответы (1)


Да, создайте каталог LogicHooks, если он не существует. Файл PHP может называться как угодно.

/custom/Extension/modules/Tasks/Ext/LogicHooks/MyLogicHookFile.php

Определите свои логические ловушки в этом файле, как и раньше.

<?php

$hook_version = 1; 
$hook_array['before_save'] = Array();

$hook_array['before_save'][] = Array(
    1, //Processing index. For sorting the array.
    'future_task_date_on_task_creation', //Label. A string value to identify the hook.
    'custom/modules/Tasks/future_visit_date.php', //The PHP file where your class is located.
    'before_save_class', //The class the method is in.
    'future_visit_date' //The method to call.
);

Затем запустите восстановление и восстановление из панели администратора.

Основное преимущество использования инфраструктуры расширений заключается в том, что она позволяет нескольким разработчикам добавлять компоненты в экземпляр Sugar, не беспокоясь о перезаписи существующего кода.
Дополнительную информацию об этом можно найти в Руководство разработчика

person MartinTawse    schedule 08.07.2016