0

我有 3 个数据对象,它们具有相同的 4 个要搜索的字段。

是否可以使用 1 个表单同时搜索所有表单,还是必须使用 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');
}
4

1 回答 1

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()显然返回 a DataList,因此将其转换为 aArrayList以便能够将结果合并在一起。尚未测试所有这些,但希望它可以为您提供指示或想法。

于 2013-08-29T14:54:57.060 回答