/** * Site search form */ public function SearchForm() { $searchText = _t('SearchForm.SEARCH', 'Search'); if ($this->owner->request && $this->owner->request->getVar('Search')) { $searchText = $this->owner->request->getVar('Search'); } $fields = new FieldList(new TextField('Search', false, $searchText)); $actions = new FieldList(new FormAction('results', _t('SearchForm.GO', 'Go'))); $form = SearchForm::create($this->owner, 'SearchForm', $fields, $actions); $form->classesToSearch(FulltextSearchable::get_searchable_classes()); return $form; }
/** * Instantiate the search form. * * @parameter <{REQUEST}> ss http request * @parameter <{DISPLAY_SORTING}> boolean * @return search form */ public function getForm($request = null, $sorting = true) { // Determine whether a search engine has been selected. $engine = $this->data()->SearchEngine; $configuration = Config::inst(); $classes = $configuration->get('FulltextSearchable', 'searchable_classes'); if (!$engine || $engine !== 'Full-Text' && !ClassInfo::exists($engine) || $engine === 'Full-Text' && (!is_array($classes) || count($classes) === 0)) { // The search engine has not been selected. return null; } // Determine whether the request has been passed through. if (is_null($request)) { $request = $this->getRequest(); } // Display the search. $fields = FieldList::create(TextField::create('Search', 'Search', $request->getVar('Search'))->addExtraClass('extensible-search')->setAttribute('data-suggestions-enabled', $configuration->get('ExtensibleSearchSuggestion', 'enable_suggestions') ? 'true' : 'false')->setAttribute('data-extensible-search-page', $this->data()->ID)); // Determine whether sorting has been passed through from the template. if (is_string($sorting)) { $sorting = $sorting === 'true'; } // Determine whether to display the sorting selection. if ($sorting) { // Display the sorting selection. $fields->push(DropdownField::create('SortBy', 'Sort By', $this->data()->getSelectableFields(), $request->getVar('SortBy') ? $request->getVar('SortBy') : $this->data()->SortBy)->setHasEmptyDefault(true)); $fields->push(DropdownField::create('SortDirection', 'Sort Direction', array('DESC' => 'Descending', 'ASC' => 'Ascending'), $request->getVar('SortDirection') ? $request->getVar('SortDirection') : $this->data()->SortDirection)->setHasEmptyDefault(true)); } // Instantiate the search form. $form = SearchForm::create($this, 'getForm', $fields, FieldList::create(FormAction::create('getSearchResults', 'Go'))); // When using the full-text search engine, the classes to search needs to be initialised. if ($engine === 'Full-Text') { $form->classesToSearch($classes); } // Allow extension customisation. $this->extend('updateExtensibleSearchForm', $form); return $form; }
public function SearchForm() { return SearchForm::create($this, "SearchForm"); }