【问题标题】:SugarCRM can't access a relation of two modulesSugarCRM 无法访问两个模块的关系
【发布时间】:2014-03-11 21:33:40
【问题描述】:

所以我在这里发疯了,我不妨告诉你我所做的整个事情,也许你可以帮助我。

我使用的是按需版本的糖。

我需要关联 2 个自定义模块,因此我使用模块生成器为它们创建了一个包:

自定义模块是表单和地图。然后我在两者之间建立了这样的关系:

之后,我将包部署到我的 Sugar 实例并继续创建一些测试数据。

然后在我的自定义入口点上,我希望获得与特定表单相关的地图,所以这是我的代码:

但是当我尝试调用我的入口点时,它不会返回任何与表单相关的地图,这是一个示例:

在示例中,地图没有回显,我只是找不到问题所在。任何帮助将不胜感激!

【问题讨论】:

    标签: sugarcrm


    【解决方案1】:

    我也遇到了 load_relationship 的问题。在大多数情况下,问题出在您的情况下的 $rel_map 参数。 modules/Leads/views/view.convertleads.php中有一个Sugar函数:

    protected function findRelationship(
        $from,
        $to
        )
    {
        global $dictionary;
        require_once("modules/TableDictionary.php");
        foreach ($from->field_defs as $field=>$def)
        {
            if (isset($def['type']) && $def['type'] == "link" && isset($def['relationship'])) 
            {
                $rel_name = $def['relationship'];
                $rel_def = "";
                if (isset($dictionary[$from->object_name]['relationships']) && isset($dictionary[$from->object_name]['relationships'][$rel_name]))
                {
                    $rel_def = $dictionary[$from->object_name]['relationships'][$rel_name];
                }
                else if (isset($dictionary[$to->object_name]['relationships']) && isset($dictionary[$to->object_name]['relationships'][$rel_name]))
                {
                    $rel_def = $dictionary[$to->object_name]['relationships'][$rel_name];
                }
                else if (isset($dictionary[$rel_name]) && isset($dictionary[$rel_name]['relationships'])
                        && isset($dictionary[$rel_name]['relationships'][$rel_name]))
                {
                    $rel_def = $dictionary[$rel_name]['relationships'][$rel_name];
                }
                if (!empty($rel_def)) {
                    if ($rel_def['lhs_module'] == $from->module_dir && $rel_def['rhs_module'] == $to->module_dir )
                    {
                        return $field;
                    }
                    else if ($rel_def['rhs_module'] == $from->module_dir && $rel_def['lhs_module'] == $to->module_dir )
                    {
                        return $field;
                    }
                }
            }
        }
        return false;
    }
    

    如果给定每个模块的 bean 作为参数,它将返回 load_relationship 所需的值。 在代码 '$def['type'] == "link"' 中,您可以看到它获取的是链接而不是关系。

    简而言之:在 d_form 模块中获取关系的链接名称以在 load_relationship 中使用,而不是关系名称

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    相关资源
    最近更新 更多