Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Searchcontext with multiple DataObjects


Reply


2 Posts   515 Views

Avatar
CraftsMan

Community Member, 35 Posts

2 July 2012 at 10:07pm

I am using the search context to search a DataObject within model admin. I have followed this:
http://doc.silverstripe.org/framework/en/reference/searchcontext/ to get it working.

How can I get this to work with multiple DataObjects?

Avatar
Bereusei

Community Member, 94 Posts

3 July 2012 at 10:59pm

Add this to your Page_Controller (in the Page.php):

public function results($data, $form){
$data = $_REQUEST;

$query = htmlspecialchars($data['Search'], ENT_QUOTES,'UTF-8');

$obj1 = DataObject::get("Obj1","MATCH (Title, MetaKeywords) AGAINST ('$query' IN BOOLEAN MODE)");
$obj2 = DataObject::get("Obj2","MATCH (Title, MetaKeywords) AGAINST ('$query' IN BOOLEAN MODE)");
$obj3 = DataObject::get("Obj3","MATCH (Title, MetaKeywords) AGAINST ('$query' IN BOOLEAN MODE)");

$searchresults = new DataObjectSet();
$searchresults->merge($obj1);
$searchresults->merge($obj2);
$searchresults->merge($obj3);

if($searchresults){
$data['Results'] = $searchresults;
} else {
$data['Results'] = '';
}

$data['Title'] = 'Searchresults';

return $this->customise($data)->renderWith(array('Page_results', 'Page'));
}

This works for the standard searchfield in Silverstripe.