让 initial_filter 与子面板的 Select 按钮一起工作

Getting initial_filter to work with subpanel's Select button

在 Suitecrm 中有一个子面板,当单击 'Select' 我希望它只显示一组特定的记录。

我有一个看起来像这样的子面板定义文件,并在 "initial_filter" 部分尝试了所有可能的变化,但是当弹出窗口出现时,它显示了所有记录

$layout_defs["un_inventory"]["subpanel_setup"]['un_inventory_leads_1'] = array (
  'order' => 0,
  'module' => 'Leads',
  'subpanel_name' => 'default',
  'sort_order' => 'asc',
  'sort_by' => 'id',
  'title_key' => 'LBL_UN_INVENTORY_LEADS_1_FROM_LEADS_TITLE',
  //'get_subpanel_data' => 'un_inventory_leads_1',

    'get_subpanel_data' => 'function:get_parent_leads',
    'function_parameters' =>
        array('import_function_file' => 'custom/modules/Leads/func/get_parent_leads_file.php',),

  'top_buttons' => 
  array (
    0 => 
    array (
      'widget_class' => 'SubPanelTopButtonQuickCreate',
    ),
    1 =>
    array (
      //'widget_class' => 'SubPanelTopSelectButton',
      'widget_class' => 'SubPanelTopSelectButtonParentProjectLeads',
      'mode' => 'MultiSelect',
      // 'initial_filter_fields' => "&first_name_advanced=hello",
      // 'initial_filter' => array('parent_project_id_c_advanced' => array('83b30b20-83a6-8099-b3b9-5d4a491888e6')),
      // 'initial_filter' => array('parent_project_id_c_advanced' => '83b30b20-83a6-8099-b3b9-5d4a491888e6'),
      // 'initial_filter' => array('account_type_advanced' => array('Student')),
      // 'initial_filter' => '&parent_project_id_c=83b30b20-83a6-8099-b3b9-5d4a491888e6',

    ),
  ),
);

有很多例子说明如何在 editview 中为 'relate' 字段完成此操作,但对于上面的子面板则没有那么多,我很确定很多人会发现这很有价值。

解决方案可能也适用于 sugarcrm CE

解决方案是覆盖默认的 TopButtonSelect class 并硬编码 $initial_filter 变量。

所以如果我们像这样硬编码值

    $initial_filter.='&parent_project_id_c_advanced='.urlencode("83b30b20-83a6-8099-b3b9-5d4a491888e6");

它只会显示 parent_project_id_c 字段值为 83b30b20-83a6-8099-b3b9-5d4a491888e6

的记录

希望对您有所帮助

来源:http://qc-digital.com/filter-values-shown-when-we-click-on-select-button-inside-a-subpanel/