src/Controller/Frontend/ActorController.php line 16

  1. <?php
  2. namespace App\Controller\Frontend;
  3. use App\Paging;
  4. use App\Repository\ActorRepository;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. #[Route('/actor'name'actor.')]
  10. class ActorController extends AbstractController
  11. {
  12.     #[Route('/'name'index'methods: ['GET'])]
  13.     public function index(
  14.         Request $request,
  15.         ActorRepository $repo,
  16.     )
  17.     {
  18.         $page = (int)$request->query->get('page');
  19.         if ($page === 0) {
  20.             $page 1;
  21.         }
  22.         $search $request->query->get('search');
  23.         $query $repo->getQueryAllWithImage($search);
  24.         $count $repo->countWithNativeQuery($query);
  25.         $paging = new Paging($page9);
  26.         $paging->setNumRecords($count);
  27.         $query->setSQL($query->getSQL() . $paging->GetSQL());
  28.         $actors $query->getResult();
  29.         $urlNextPage null;
  30.         if ($paging->getNextPage()) {
  31.             $urlNextPage $this->generateUrl('video.index');
  32.             $urlNextPage .= '?page=' $paging->getNextPage();
  33.             if ($search) {
  34.                 $urlNextPage .= '&search='.urlencode($search);
  35.             }
  36.         }
  37.         return $this->render('Frontend/Actor/Index.twig', [
  38.             'actors' => $actors,
  39.             'search' => $search,
  40.             'paging' => $paging,
  41.             'url_next_page' => $urlNextPage,
  42.         ]);
  43.     }
  44.     #[Route('/search'name'search'methods: ['GET'])]
  45.     public function search(Request $requestActorRepository $repo): Response
  46.     {
  47.         $value $request->query->get('q');
  48.         $actors $repo->search($value);
  49.         return $this->json(['data' => $actors], 200, [], ['groups' => ['main']]);
  50.     }
  51. }