2016-07-07 1 views
2

Это моя первая попытка кодирования sugarCRM/suiteCRM.Пытается добавить логический крюк в наборCRM при создании или обновлении задачи

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

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

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

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

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

Внутри \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. 
); 

?> 

Внутри \ пользовательские \ модули \ 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, если ее там нет? Какое имя файла следует присвоить этому файлу? Нужно ли мне что-то менять внутри кода?

ответ

2

Да, создайте каталог 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, не беспокоясь о перезаписи существующего кода.
Дополнительная информация об этом может быть найдена в Developer Guide

+0

Спасибо, теперь я сделал это! –