finder = $finder; $this->view = $view; $this->translator = $translator; } /** * Invoke the SearchHandler. * * @param \Slim\Psr7\Request $request * @param \Slim\Psr7\Response $response * * @return \Psr\Http\Message\ResponseInterface */ public function __invoke(Request $request, Response $response): ResponseInterface { $search = $request->getQueryParams()['search']; $files = $this->finder->in('.')->name( $search ? sprintf('/(?:.*)%s(?:.*)/i', preg_quote($search, '/')) : '' ); if ($files->count() === 0) { return $this->view->render($response, 'error.twig', [ 'message' => $this->translator->trans('error.no_results_found'), 'search' => $search, ]); } return $this->view->render($response, 'index.twig', [ 'files' => $files, 'search' => $search, 'title' => $search, ]); } }