Php 触点模块中的逻辑钩

Php 触点模块中的逻辑钩,php,sugarcrm,suitecrm,Php,Sugarcrm,Suitecrm,我需要SuiteCRM中的下一件事:当我保存联系人(填写他的名字和姓氏)时,我需要在一个字段中输入缩写的名字。例如,我需要的是J.Smith,而不是John Smith 我做了下一个代码: class contactShortName { function getShortName($bean, $event, $arguments) { $bean->short_name = substr($bean->first_name,0,1) . '.' .

我需要SuiteCRM中的下一件事:当我保存联系人(填写他的名字和姓氏)时,我需要在一个字段中输入缩写的名字。例如,我需要的是J.Smith,而不是John Smith

我做了下一个代码:

class contactShortName
{
    function getShortName($bean, $event, $arguments)
    {
        $bean->short_name = substr($bean->first_name,0,1) . '.' .  $bean->last_name;
        $bean->save();
    }
}

但它不起作用。请提供帮助。

根据提供的信息,custom/modules/Contacts/logic_hooks.php文件应包含类似以下内容:

$hook_version = 1;
$hook_array = Array();
$hook_array['before_save'] = Array();    
$hook_array['before_save'][] = [1, 'Set short name', 'path/to/contactShortName.php', 'contactShortName', 'getShortName'];
文件应该是

class contactShortName
{
    function getShortName($bean, $event, $arguments)
    {
        $bean->short_name = substr($bean->first_name,0,1) . '.' .  $bean->last_name;
    }
}

这应该行…

您是否已将其添加到自定义/modules/Contacts/logic_hooks.php文件中?@johnmcuk当然可以。快速修复和构建您肯定不需要$bean->save()部分,这可能会导致无限循环。谢谢您的回答,但它仍然不起作用:(逻辑钩子正在启动吗?如果您执行var_dump())在getShortName方法中,它显示了吗?是的,我只是为了测试而尝试了$bean->short\u name=$bean->last\u name,它工作了。但是当我添加substr函数时,它不工作了。我唯一能想到的是,因为short\u name是一个自定义字段,它实际上可能是$bean->short\u name\u cwell,我找到了解决方案。我用俄语打印,一个一个俄文字母被视为两个符号,而不是一个英文符号。这就是为什么我需要像substr($bean->first_name,0,2)这样的操作来打印第一个字母。非常感谢您的帮助!