. // }}} namespace Component\Search; use App\Core\Event; use App\Core\Form; use function App\Core\I18n\_m; use App\Core\Modules\Component; use App\Util\Exception\RedirectException; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\HttpFoundation\Request; class Search extends Component { public function onAddRoute($r) { $r->connect('search', '/search', Controller\Search::class); } /** * Add the search form to the site header */ public function onAddExtraHeaderForms(Request $request, array &$elements) { $form = Form::create([ ['query', TextType::class, [ 'attr' => ['placeholder' => _m('Search tags...')], ]], [$form_name = 'submit_search', SubmitType::class, [ 'label' => _m('Submit'), 'attr' => [ //'class' => 'button-container search-button-container', 'title' => _m('Query notes for specific tags.'), ], ], ], ]); if ('POST' === $request->getMethod() && $request->request->has($form_name)) { $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $data = $form->getData(); throw new RedirectException('search', ['q' => $data['query']]); } } $elements[] = $form->createView(); return Event::next; } /** * Output our dedicated stylesheet * * @param array $styles stylesheets path * * @return bool hook value; true means continue processing, false means stop */ public function onEndShowStyles(array &$styles, string $route): bool { $styles[] = 'components/Search/assets/css/view.css'; return Event::next; } }