我有3个数据对象,我想搜索相同的4个字段。
是否可以一次搜索所有这些表单,或者我是否必须使用3种不同的搜索表单?
在我的网页类型中使用以下文档中的基本代码,我想搜索:
public function DataObjectSearch() {
$context = singleton('DataObject1')->getCustomSearchContext();
$fields = $context->getSearchFields();
$form = new Form($this, "DataObjectSearch",
$fields,
new FieldList(
new FormAction('doSearch')
)
);
return $form;
}
public function doSearch($data, $form) {
$context = singleton('Dataobject1')->getCustomSearchContext();
$results = $context->getResults($data);
return $this->customise(array(
'Results' => $results
))->renderWith('DataObject1Template');
}
答案 0 :(得分:0)
从来没有真正使用过这个,但我想如果您的DataObjects具有相同的字段,您可以多次调用getResults()
函数并将它们合并在一起。
public function doSearch($data, $form)
{
$context = singleton('Dataobject1')->getCustomSearchContext();
$results = ArrayList::create( $context->getResults($data)->toArray() );
$context = singleton('Dataobject2')->getCustomSearchContext();
$results->merge( $context->getResults($data)->toArray() );
$context = singleton('Dataobject3')->getCustomSearchContext();
$results->merge( $context->getResults($data)->toArray() );
//...and so on....
return $this->customise(array(
'Results' => $results
))->renderWith('DataObject1Template');
}
getResults()
显然会返回DataList
,因此会将其转换为ArrayList
,以便能够将结果合并在一起。没有测试过这一切,但希望它可以给你指点或想法。