/** * Add a site search form to all controllers that links to the * results controller. * * @return Form */ public function SearchForm() { // If we have setup objects to search if (count(Searchable::getObjects())) { $searchText = ""; if ($this->owner->request && $this->owner->request->getVar('Search')) { $searchText = $this->owner->request->getVar('Search'); } $fields = FieldList::create(TextField::create('Search', false, $searchText)->setAttribute("placeholder", _t('Searchable.Search', 'Search'))); $actions = FieldList::create(FormAction::create('results', _t('Searchable.Go', 'Go'))); $template_class = Searchable::config()->template_class; $results_page = new $template_class(); $form = Form::create($this->owner, 'SearchForm', $fields, $actions)->setFormMethod('get')->setFormAction($results_page->Link())->disableSecurityToken(); $this->owner->extend("updateSearchForm", $form); return $form; } }
public function object() { $classname = $this->request->param("ID"); $classes_to_search = Searchable::getObjects(); foreach ($classes_to_search as $object) { if ($object["ClassName"] == $classname) { $cols = $object["Columns"]; } } $keywords = $this->getQuery(); $this->customise(array("MetaTitle" => _t('Searchable.SearchResultsFor', "Search Results for '{query}'", 'This is the title used for viewing the results of a search', array('query' => $this->getQuery())), "Results" => PaginatedList::create(Searchable::Results($classname, $cols, $keywords), $this->request)->setPageLength(Searchable::config()->page_length))); $this->extend("onBeforeObject"); return $this->renderWith(array("SearchResults_{$classname}", "SearchResults_object", "SearchResults", "Page")); }