From 77c234987d68f9713e722d6e29e437571135060c Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Wed, 12 May 2021 12:45:09 +0200 Subject: [PATCH] update crud of categories --- .../Blog/CategoryAdminController.php | 123 +++++++++--------- templates/blog/category_admin/_show.html.twig | 63 +++++++++ templates/blog/category_admin/edit.html.twig | 57 -------- templates/blog/category_admin/index.html.twig | 79 ----------- templates/blog/category_admin/new.html.twig | 39 ------ templates/blog/category_admin/show.html.twig | 90 ------------- 6 files changed, 128 insertions(+), 323 deletions(-) create mode 100644 templates/blog/category_admin/_show.html.twig delete mode 100644 templates/blog/category_admin/edit.html.twig delete mode 100644 templates/blog/category_admin/index.html.twig delete mode 100644 templates/blog/category_admin/new.html.twig delete mode 100644 templates/blog/category_admin/show.html.twig diff --git a/src/Controller/Blog/CategoryAdminController.php b/src/Controller/Blog/CategoryAdminController.php index 53a8335..2ca02cc 100644 --- a/src/Controller/Blog/CategoryAdminController.php +++ b/src/Controller/Blog/CategoryAdminController.php @@ -12,24 +12,72 @@ use App\Repository\Blog\PostRepositoryQuery; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; +use App\Core\Controller\Admin\Crud\CrudController; +use App\Core\Crud\CrudConfiguration; +use Symfony\Component\HttpFoundation\Session\Session; +use App\Core\Crud\Field\TextField; +use App\Form\Blog\CategoryType; +use App\Core\Crud\Field\ButtonField; +use App\Core\Entity\EntityInterface; /** * @Route("/admin/blog/category") */ -class CategoryAdminController extends AdminController +class CategoryAdminController extends CrudController { + public function getConfiguration(): CrudConfiguration + { + return CrudConfiguration::create() + ->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) + // ->setForm('filter', FooFilterType::class) + + ->setMaxPerPage('index', 100) + + ->setAction('index', 'new', true) + ->setAction('index', 'show', true) + ->setAction('index', 'edit', true) + ->setAction('index', 'delete', true) + + ->setAction('edit', 'back', true) + ->setAction('edit', 'show', true) + ->setAction('edit', 'delete', true) + + ->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 border'], + 'raw' => true, + ]) + ; + } + /** * @Route("/{page}", name="admin_blog_category_index", requirements={"page": "\d+"}) */ - public function index(int $page = 1, RepositoryQuery $query, Request $request): Response + public function index(int $page = 1, RepositoryQuery $query, Request $request, Session $session): Response { - $pager = $query - ->orderBy('.title', 'ASC') - ->paginate($page, 100); + $query->orderBy('.title', 'ASC'); - return $this->render('blog/category_admin/index.html.twig', [ - 'pager' => $pager, - ]); + return $this->doIndex($page, $query, $request, $session); } /** @@ -37,27 +85,9 @@ class CategoryAdminController extends AdminController */ public function new(EntityFactory $factory, EntityManager $entityManager, Request $request): Response { - $entity = $factory->create(); - $form = $this->createForm(EntityType::class, $entity); + $this->getConfiguration()->setView('newForm', 'blog/category_admin/_form.html.twig'); - if ($request->isMethod('POST')) { - $form->handleRequest($request); - - if ($form->isValid()) { - $entityManager->create($entity); - $this->addFlash('success', 'Donnée enregistrée.'); - - return $this->redirectToRoute('admin_blog_category_edit', [ - 'entity' => $entity->getId(), - ]); - } - $this->addFlash('warning', 'Le formulaire est invalide.'); - } - - return $this->render('blog/category_admin/new.html.twig', [ - 'form' => $form->createView(), - 'entity' => $entity, - ]); + return $this->doNew($factory->create(), $entityManager, $request); } /** @@ -65,26 +95,9 @@ class CategoryAdminController extends AdminController */ public function edit(Entity $entity, EntityManager $entityManager, Request $request): Response { - $form = $this->createForm(EntityType::class, $entity); + $this->getConfiguration()->setView('editForm', 'blog/category_admin/_form.html.twig'); - if ($request->isMethod('POST')) { - $form->handleRequest($request); - - if ($form->isValid()) { - $entityManager->update($entity); - $this->addFlash('success', 'Donnée enregistrée.'); - - return $this->redirectToRoute('admin_blog_category_edit', [ - 'entity' => $entity->getId(), - ]); - } - $this->addFlash('warning', 'Le formulaire est invalide.'); - } - - return $this->render('blog/category_admin/edit.html.twig', [ - 'form' => $form->createView(), - 'entity' => $entity, - ]); + return $this->doEdit($entity, $entityManager, $request); } /** @@ -99,10 +112,10 @@ class CategoryAdminController extends AdminController ->paginate(1, 10) ; - return $this->render('blog/category_admin/show.html.twig', [ - 'entity' => $entity, - 'posts' => $posts, - ]); + $this->getConfiguration()->setView('showEntity', 'blog/category_admin/_show.html.twig'); + $this->getConfiguration()->addViewData('show', 'posts', $posts); + + return $this->doShow($entity); } /** @@ -110,13 +123,7 @@ class CategoryAdminController extends AdminController */ 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', 'Données supprimée..'); - } - - return $this->redirectToRoute('admin_blog_category_index'); + return $this->doDelete($entity, $entityManager, $request); } public function getSection(): string diff --git a/templates/blog/category_admin/_show.html.twig b/templates/blog/category_admin/_show.html.twig new file mode 100644 index 0000000..af534a3 --- /dev/null +++ b/templates/blog/category_admin/_show.html.twig @@ -0,0 +1,63 @@ +
+
+
    +
  • + Titre + + {{ entity.title }} +
  • +
  • + Sous-titre + + {{ entity.subTitle }} +
  • +
  • + Slug + + {{ absolute_url(entity.slug) }} +
  • +
  • + En ligne + + {{ entity.isActive ? 'oui' : 'non' }} +
  • +
+
+
+
Description
+ + {{ entity.description|raw|nl2br }} +
+ +
+ + + + + + + + {% for item in configuration.viewDatas('show').posts %} + + + + {% else %} + + + + {% endfor %} + +
Derniers articles
+ + {{ item.title }} + +
+
+ +
+
+ Aucun résultat +
+
+
+
diff --git a/templates/blog/category_admin/edit.html.twig b/templates/blog/category_admin/edit.html.twig deleted file mode 100644 index 145f473..0000000 --- a/templates/blog/category_admin/edit.html.twig +++ /dev/null @@ -1,57 +0,0 @@ -{% extends '@Core/admin/layout.html.twig' %} - -{% block title %}{{ 'Catégories'|trans }} - {{ parent() }}{% endblock %} - -{% block body %} -
-
-

{{ entity.title }}

- -
-
- - - Retour à la liste - - - - Voir - - - - - - -
-
-
-
- -
-
-
-
- {{ include('blog/category_admin/_form.html.twig') }} -
-
-
- - {{ form_rest(form) }} -
- -
- - -
-{% endblock %} diff --git a/templates/blog/category_admin/index.html.twig b/templates/blog/category_admin/index.html.twig deleted file mode 100644 index 4613e8e..0000000 --- a/templates/blog/category_admin/index.html.twig +++ /dev/null @@ -1,79 +0,0 @@ -{% extends '@Core/admin/layout.html.twig' %} - -{% block title %}{{ 'Catégories'|trans }} - {{ parent() }}{% endblock %} - -{% block body %} -
-
-

Catégories

- - -
- - {{ knp_pagination_render(pager) }} -
- -
- - - - - - - - - - {% for item in pager %} - {% set edit = path('admin_blog_category_edit', {entity: item.id}) %} - {% set show = path('admin_blog_category_show', {entity: item.id}) %} - - - - - - - {% else %} - - - - {% endfor %} - -
TitreArticlesActions
- - {{ item.title }} - - - - {% set postsCount = item.posts|length %} - - {{ postsCount }} {{ postsCount < 2 ? 'article' : 'articles' }} - - - - - - - -
- - -
-
-
- -
-
- Aucun résultat -
-
-
-{% endblock %} diff --git a/templates/blog/category_admin/new.html.twig b/templates/blog/category_admin/new.html.twig deleted file mode 100644 index 2c82652..0000000 --- a/templates/blog/category_admin/new.html.twig +++ /dev/null @@ -1,39 +0,0 @@ -{% extends '@Core/admin/layout.html.twig' %} - -{% block title %}{{ 'Catégories'|trans }} - {{ parent() }}{% endblock %} - -{% block body %} -
-
-

Nouvelle catégorie

- -
-
- - - - Retour à la liste - - - -
-
-
-
- -
-
-
-
- {{ include('blog/category_admin/_form.html.twig') }} -
-
-
- - {{ form_rest(form) }} -
-{% endblock %} diff --git a/templates/blog/category_admin/show.html.twig b/templates/blog/category_admin/show.html.twig deleted file mode 100644 index bbdfbed..0000000 --- a/templates/blog/category_admin/show.html.twig +++ /dev/null @@ -1,90 +0,0 @@ -{% extends '@Core/admin/layout.html.twig' %} - -{% block title %}{{ 'Catégories'|trans }} - {{ parent() }}{% endblock %} - -{% block body %} -
-
-

{{ entity.title }}

- - -
-
- -
-
-
    -
  • - Titre - - {{ entity.title }} -
  • -
  • - Sous-titre - - {{ entity.subTitle }} -
  • -
  • - Slug - - {{ absolute_url(entity.slug) }} -
  • -
  • - En ligne - - {{ entity.isActive ? 'oui' : 'non' }} -
  • -
-
-
-
Description
- - {{ entity.description|raw|nl2br }} -
- -
- - - - - - - - {% for item in posts %} - - - - {% else %} - - - - {% endfor %} - -
Derniers articles
- - {{ item.title }} - -
-
- -
-
- Aucun résultat -
-
-
-
-{% endblock %}