所以我有两个自定义模块。他们是一对多相关的。 模块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'的创建数据“ 被建造。所以天然没有新的记录显示在subpanle上。 我错过了什么? 谢谢!
答案 0 :(得分:0)
对于迟到的回复表示歉意,但我可以解释一下:
你没有做错任何事,这是我在Sugar中发现的一个错误......
从快速创建创建的记录与您所在的活动记录相关的原因是因为快速创建按钮具有隐藏的表单,其当前记录的id映射到子面板模块用于该字段的字段关系。但是当您创建自定义模块时,快速创建假定关联字段将是“moduleA_moduleB_id”,它是Sugar中的库存模块。但是当你在Sugar中创建一个自定义模块时,它会截断所有关系字段(在Bean和数据库中),这样它们就不会超过25个字符。
简而言之,快速创建代码假定将两者链接在一起的字段将具有与库存模块关系相同的约定,这是错误的。
在不修复代码(或等待Sugar的错误修复)的情况下避免这种情况的唯一方法是确保自定义模块的名称少于10个字符,包括它放在前面的键(所以真的它应该是5-6个字符顶部)。
我已经在我自己的Sugar安装中更新了代码并报告了该错误。它可以在下次更新中修复。
我会解释如何在你的股票实例中修复它,但我担心这只会让事情更加混乱。但是,如果您仍需要解决此问题,请告诉我,我将发布实际代码。