• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

KNP Paginator w symfony odpala kontroller zbyt wiele razy!

Object Storage Arubacloud
0 głosów
79 wizyt
pytanie zadane 28 sierpnia 2020 w PHP przez Skorpionita Nowicjusz (200 p.)

Witam, otóż mam pewien problem, na początek chciałbym oczywiście pozdrowić wszystkich na forum pana Zelenta. Fantastyczny człowiek, robiący wiele dobrego na polskiej scenie informatycznej. Dziękuję za pańskie kursy. Po 2. dziękuję za tą możliwość dołączenia do waszego forum. I sory, ale przychodzę do was od razu z problemem.

Mianowicie. Tworzę forum w symfony, i do wyświetlania postów używam paginatora, który przy wczytywaniu widoku włącza chyba (nie sprawdziłem) kontroler x*ilość_podstron_paginacji + 1 razy. Więc gdy w tym samym kontrolerze, chce dodac do zmiennej view + 1. To odpalając go kilkukrotnie przez paginator ta liczba, jest zawsze wieksza od 2. 

Ktoś wie może jak to naprawić?

 

/**
     * @Route("thread/{threadid}/{threadname}", name="app_forum_thread_user", defaults={"threadname"=""})
     * @Security("is_granted('ROLE_USER')")
     */
    public function openThread(MainMenuService $mainMenuService, PaginatorInterface $paginator,
                               UserForumPostRepository $forumPostRepo, Request $request,
                               UserForumTopic $threadid, SessionInterface $session, EntityManagerInterface $em,
                                RequestStack $event, LoggerInterface $logger){
        if($request->attributes->get('_request_type')==1){
            $views = $threadid->getViews();
            $threadid->setViews($views+1);

            $em->persist($threadid);
            $em->flush();
        }

        $logger->info('REQUEST rejkjawik: '.$request->attributes->get('_request_type'));

        $query = $forumPostRepo->findPostsForThreadWithPagination($threadid);

        $pagination = $paginator->paginate(
            $query, /* query NOT result */
            $request->query->getInt('page', 1), /*page number*/
            ($session->get('plimit')) ? $session->get('plimit') : 10 /*limit per page*/
        );
        $postsLikes = [];
        foreach ($pagination as $post){

            $conn = $em->getConnection();
            $sql = "SELECT * FROM account_user_forum_post WHERE account_id = ? AND user_forum_post_id = ?";
            $stmt = $conn->prepare($sql);
            $stmt->bindValue(1, $this->getUser()->getId());
            $stmt->bindValue(2, $post->getId());
            $stmt->execute();
            $wynik = $stmt->fetch();

            $postsLikes[$post->getId()] = ($wynik)? 1 : 0 ;
        }
        $mainMenu = $mainMenuService->getMenu();
        return $this->render($_SERVER['DEFAULT_TEMPLATE'].'/forum/Thread_View.twig', [
            'title'=>'Forum - '.$_SERVER['APP_NAME'],
            'lang'=>'pl',
            'APP_NAME'=>$_SERVER['APP_NAME'],
            'logoSite'=>$_SERVER['SHOW_LOGO'],
            'navFooter'=>$_SERVER['NAV_FOOTER'],
            'footer'=>$_SERVER['FOOTER'],
            'pageName'=>"Forum",
            'MainMenu' => $mainMenu,
            'user'=>$this->getUser(),
            'profile'=>$threadid->getForum()->getCategory()->getIsItUserPrivateForum()->getUserAdmin(),
            'forumCre'=>$threadid->getForum()->getCategory()->getIsItUserPrivateForum(),
            'forum'=>$threadid->getForum(),
            'thread'=>$threadid,
            'posts_pagination'=>$pagination,
            'postsLikes'=>$postsLikes,
            'page'=> $request->query->get('page'),

        ]);
    }

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 1,013 wizyt
pytanie zadane 6 lutego 2018 w PHP przez misiek.sz Bywalec (2,050 p.)
0 głosów
4 odpowiedzi 276 wizyt
pytanie zadane 21 kwietnia 2018 w PHP przez wneku Nowicjusz (200 p.)
0 głosów
1 odpowiedź 238 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...