/**
  * 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"));
 }