setPageTitle('index', 'Catégories') ->setPageTitle('edit', '{title}') ->setPageTitle('new', 'Nouvelle catégorie') ->setPageTitle('show', '{title}') ->setPageRoute('index', 'admin_blog_category_index') ->setPageRoute('new', 'admin_blog_category_new') ->setPageRoute('edit', 'admin_blog_category_edit') ->setPageRoute('show', 'admin_blog_category_show') ->setPageRoute('delete', 'admin_blog_category_delete') ->setPageRoute('filter', 'admin_blog_category_filter') ->setForm('edit', CategoryType::class, []) ->setForm('new', CategoryType::class) ->setMaxPerPage('index', 100) ->setView('form', 'blog/category_admin/_form.html.twig') ->setField('index', 'Titre', TextField::class, [ 'property' => 'title', ]) ->setField('index', 'Articles', ButtonField::class, [ 'property_builder' => function (EntityInterface $entity) { $count = $entity->getPosts()->count(); return ''.$count.' article'.($count > 1 ? 's' : ''); }, 'button_attr' => ['class' => 'btn btn-sm btn-light'], 'raw' => true, ]) ; } /** * @Route("/{page}", name="admin_blog_category_index", requirements={"page": "\d+"}) */ public function index(int $page = 1, RepositoryQuery $query, Request $request, Session $session): Response { $query->orderBy('.title', 'ASC'); return $this->doIndex($page, $query, $request, $session); } /** * @Route("/new", name="admin_blog_category_new") */ public function new(EntityFactory $factory, EntityManager $entityManager, Request $request): Response { return $this->doNew($factory->create(), $entityManager, $request); } /** * @Route("/edit/{entity}", name="admin_blog_category_edit") */ public function edit(Entity $entity, EntityManager $entityManager, Request $request): Response { return $this->doEdit($entity, $entityManager, $request); } /** * @Route("/show/{entity}", name="admin_blog_category_show") */ public function show(Entity $entity, PostRepositoryQuery $postQuery): Response { $posts = $postQuery->create() ->orderBy('.publishedAt', 'DESC') ->orderBy('.createdAt', 'DESC') ->inCategory($entity) ->paginate(1, 10) ; $this->getConfiguration()->setView('show_entity', 'blog/category_admin/_show.html.twig'); $this->getConfiguration()->addViewData('show', 'posts', $posts); return $this->doShow($entity); } /** * @Route("/filter", name="admin_blog_category_filter", methods={"GET"}) */ public function filter(Session $session): Response { return $this->doFilter($session); } /** * @Route("/delete/{entity}", name="admin_blog_category_delete", methods={"DELETE"}) */ public function delete(Entity $entity, EntityManager $entityManager, Request $request): Response { return $this->doDelete($entity, $entityManager, $request); } public function getSection(): string { return 'blog_category'; } }