我需要在SuiteCRM中创建一个页面(v7.9 - 基于Sugar 6.5 CE),它有一个对象列表(自定义模块),每个对象前面都有复选框。到目前为止,非常好:这是一个标准的ListView。
问题是只有一些记录应该在列表中(过滤相关自定义模块/对象中是否存在关联的行)。
此页面需要与此模块的“常规”列表不同,该列表应该列出所有记录。
在我看来,使用自定义“操作”访问此页面视图是有意义的,我可以使用正确的URL触发自定义操作代码。
但我不知道如何挂钩过滤。起初,看起来process_record逻辑钩子在这里可能会有所帮助,但它只是为每个要显示的记录提供bean。除非有一个标志“显示此记录”,我没有看到,这不是那么有用。
理想情况下,当然,我希望能够在调用
之前在自定义控制器操作中注入不同的WHERE子句parent::action_listview();
显示页面,但我没有看到doc指出它可能如何工作。我会包含源代码,但到目前为止,上面的行是controller.php
文件中的所有内容(但是样板文件)。
答案 0 :(得分:0)
在自定义文件夹中创建listview的副本,然后覆盖listview的listViewProcess()方法并在其中插入查询:
function listViewProcess() // generating listview
{
$this->processSearchForm();
if($this->where==''){
$this->where.="leads.status='Converted'";
}
$this->lv->searchColumns = $this->searchForm->searchColumns;
if(!$this->headers)
return;
$this->lv->setup($this->seed, 'custom/modules/Leads/ListView/ListViewGeneric.tpl', $this->where, $this->params);
echo $this->lv->display();
}
可以在这里找到另一个经过测试的工作示例: How to hard code the where condition in list view ,basic search,advance search in sugar CE
P.S:我不太确定“ v7.9 –宽松地基于Sugar 6.5 CE”,我想说它与API的内容是95%相同
答案 1 :(得分:0)
用于SuiteCRM中的自定义模块。
您可以在函数create_new_list_query中进行更改。