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   473 Views

Avatar
CraftsMan

2 July 2012 at 10:07pm Community Member, 35 Posts

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

3 July 2012 at 10:59pm Community Member, 94 Posts

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.