0

所以我有两个自定义模块。它们是一对多相关的。模块 A vardef 有:`'lm_contacts' =>

array(
  'name' => 'lm_contacts',
  'type' => 'link',
  'relationship' => 'lm_contacts_relation',
  'source' => 'non-db',
  'vname' => 'LBL_LEADS',
),

'relationships' => 
array (
        'lm_contacts_relation' => 
        array (
            'lhs_module' => 'LM_LM_Objektas',
            'lhs_table' => 'lm_lm_objektas',
            'lhs_key' => 'id',
            'rhs_module' => 'LM_LM_contact_person',
            'rhs_table' => 'lm_lm_contact_person',
            'rhs_key' => 'lm_object ',
            'relationship_type' => 'one-to-many',
          ),
      ),

并且模块 a 有 subpaneldef:

$layout_defs['LM_LM_Objektas'] = array(
// list of what Subpanels to show in the DetailView
    'subpanel_setup' => 
    array(
        'lm_contacts' => 
        array(
            'order' => 10,
            'module' => 'LM_LM_contact_person',
            'subpanel_name' => 'default',
            'sort_order' => 'asc',
            //'sort_by' => 'id',
            'title_key' => 'LBL_CONTACT_SUBPANEL_TITLE',
            'get_subpanel_data' => 'lm_contacts',
            'add_subpanel_data' => 'lm_contacts_id',
            'top_buttons' => 
            array (
                0 => 
                array (
                    'widget_class' => 'SubPanelTopButtonQuickCreate',
                ),
                1 => 
                array (
                    'widget_class' => 'SubPanelTopSelectButton',
                    'mode' => 'MultiSelect',
                    'popup_module' => 'LM_LM_contact_person',
                ),
            ),
        ),
),
);

现在模块 a: lm_objectas 确实正确显示子面板,但是当我尝试通过子面板快速创建按钮向 lm_contacts 模块添加新请求时,确实创建了记录,但没有创建字段“'rhs_key' => 'lm_object'”的真实数据。所以自然不会显示子面板上的新记录。我错过了什么?谢谢!

4

1 回答 1

0

抱歉回复晚了,但我可以解释一下:

你没有做错任何事,这是我在 Sugar 中发现的错误....

从快速创建创建的记录与您所在的活动记录相关的原因是,快速创建按钮有一个隐藏表单,其中当前记录的 id 映射到子面板模块用于该关系的字段。但是当您创建自定义模块时,快速创建假定相关字段将是“moduleA_moduleB_id”,它用于 Sugar 中的库存模块。但是当您在 Sugar 中创建自定义模块时,它会截断所有关系字段(在 Bean 和数据库中),使它们不超过 25 个字符。

长话短说,快速创建代码假定将两者链接在一起的字段将具有与 stock 模块关系相同的约定,这是错误的。

在不修复代码(或等待 Sugar 的错误修复)的情况下避免这种情况的唯一方法是确保您的自定义模块的名称少于 10 个字符,包括它放在前面的键(所以真的应该是5-6 个字符顶部)。

我已经在我自己安装的 Sugar 中更新了代码并报告了这个错误。它可能会在下一次更新中修复。

我会解释如何在你的股票实例中修复它,但我担心这只会让事情变得更加混乱。但是,如果您仍然需要解决此问题,请告诉我,我将发布实际代码。

于 2011-09-09T07:15:27.470 回答