performSearch($term); } catch (InvalidArgumentException $e) { // user entered empty string (or something like empty string) return redirect() ->route('search') ->with('error', $e->getMessage()); } } return view('admin.search.page', ['search' => $term, 'results' => $results]); } /** * Method used for performing search. * This method iterates over all registered search engines and returns results for each engine apart. * * @param string $term search text * * @return array array of results. One item per each engine */ protected function performSearch($term) { $engines = App::make('registerSearchEngine') ->get(SearchEngineRegistrator::ADMIN); $resultsParts = []; foreach ($engines as $engine) { /** * @var SearchHandler $search * @var SearchPresenterHandler $presenter */ list ($search, $presenter) = $engine; // try to find given term $results = $search->search($term); $content = $presenter->render($results); if (is_null($content)) { continue; } // create result object $resultsParts[$search->getId()] = [ 'name' => $search->getName(), 'content' => $content, 'count' => count($results) ]; } return $resultsParts; } }