createForm( UserSearchType::class, null, [ 'action' => $this->generateUrl('index'), ] ); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $login = $form->get('login')->getData(); if (null !== $user = $userRepository->findOneBy(['login' => $login])) { return $this->redirectToRoute('user_show', ['login' => $login]); } $form->get('login')->addError(new FormError('Login not found')); } return $this->render('SkobkinPointToolsBundle:Main:index.html.twig', [ 'form' => $form->createView(), 'autocomplete_size' => self::AJAX_AUTOCOMPLETE_SIZE, 'users_count' => $userRepository->getUsersCount(), 'subscribers_count' => $subscriptionRepository->getUserSubscribersCountById($this->appUserId), 'events_count' => $subscriptionEventRepository->getLastDayEventsCount(), 'service_login' => $this->appUserLogin, ]); } /** Returns user search autocomplete data in JSON */ public function searchUserAjaxAction(string $login, UserRepository $userRepository): JsonResponse { $result = []; foreach ($userRepository->findUsersLikeLogin($login, self::AJAX_AUTOCOMPLETE_SIZE) as $user) { $result[] = [ 'login' => $user->getLogin(), 'name' => $user->getName(), ]; } return $this->json($result); } }