updateFilters($request, $session); $pager = $query ->orderBy('.id', 'DESC') ->useFilters($this->filters) ->paginate($page) ; return $this->render('blog/post_admin/index.html.twig', [ 'pager' => $pager, 'hasFilters' => !empty($this->filters), ]); } /** * @Route("/new", name="admin_blog_post_new") */ public function new(EntityFactory $factory, EntityManager $entityManager, Request $request): Response { $entity = $factory->create($this->getUser()); $form = $this->createForm(EntityType::class, $entity); if ($request->isMethod('POST')) { $form->handleRequest($request); if ($form->isValid()) { $entityManager->create($entity); $this->addFlash('success', 'The data has been saved.'); return $this->redirectToRoute('admin_blog_post_edit', [ 'entity' => $entity->getId(), ]); } $this->addFlash('warning', 'The form is not valid.'); } return $this->render('blog/post_admin/new.html.twig', [ 'form' => $form->createView(), 'entity' => $entity, ]); } /** * @Route("/edit/{entity}", name="admin_blog_post_edit") */ public function edit(Entity $entity, EntityManager $entityManager, FileUploadHandler $fileUpload, Request $request): Response { $form = $this->createForm(EntityType::class, $entity); if ($request->isMethod('POST')) { $form->handleRequest($request); if ($form->isValid()) { $directory = 'uploads/post/'.date('Y'); $fileUpload->handleForm( $form->get('image')->getData(), $directory, function ($filename) use ($entity, $directory) { $entity->setImage($directory.'/'.$filename); } ); $entityManager->update($entity); $this->addFlash('success', 'The form is not valid.'); return $this->redirectToRoute('admin_blog_post_edit', [ 'entity' => $entity->getId(), ]); } $this->addFlash('warning', 'The form is not valid.'); } return $this->render('blog/post_admin/edit.html.twig', [ 'form' => $form->createView(), 'entity' => $entity, ]); } /** * @Route("/show/{entity}", name="admin_blog_post_show") */ public function show(Entity $entity): Response { return $this->render('blog/post_admin/show.html.twig', [ 'entity' => $entity, ]); } /** * @Route("/filters", name="admin_blog_post_filters") */ public function filters(Session $session): Response { $form = $this->createForm(PostFilterType::class); $form->submit($session->get('post_filter', [])); return $this->render('blog/post_admin/filters.html.twig', [ 'form' => $form->createView(), ]); } /** * @Route("/delete/{entity}", name="admin_blog_post_delete", methods={"DELETE"}) */ public function delete(Entity $entity, EntityManager $entityManager, Request $request): Response { if ($this->isCsrfTokenValid('delete'.$entity->getId(), $request->request->get('_token'))) { $entityManager->delete($entity); $this->addFlash('success', 'The data has been removed.'); } return $this->redirectToRoute('admin_blog_post_index'); } public function getSection(): string { return 'blog_post'; } protected function updateFilters(Request $request, Session $session) { if ($request->query->has('post_filter')) { $filters = $request->query->get('post_filter'); if ('0' === $filters) { $filters = []; } } elseif ($session->has('post_filter')) { $filters = $session->get('post_filter'); } else { $filters = []; } $form = $this->createForm(PostFilterType::class); $form->submit($filters); if (empty($filters)) { $this->filters = $filters; $session->set('post_filter', $filters); } elseif ($form->isValid()) { $this->filters = $form->getData(); $session->set('post_filter', $filters); } } }