From 8ec9c75953f89a9338a3538310e59bf0b0d38d59 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Fri, 19 Mar 2021 15:13:08 +0100 Subject: [PATCH] add page template form --- config/packages/app.yaml | 1 + src/Controller/Site/PageAdminController.php | 6 ++++- src/Entity/Site/Page/Block.php | 2 +- src/Form/Site/Page/PageType.php | 26 +++++++++++++++++++++ templates/site/page/simple/page.html.twig | 2 ++ templates/site/page/simple/page2.html.twig | 8 +++++++ templates/site/page_admin/_form.html.twig | 2 +- 7 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 templates/site/page/simple/page2.html.twig diff --git a/config/packages/app.yaml b/config/packages/app.yaml index 5091281..52aad8e 100644 --- a/config/packages/app.yaml +++ b/config/packages/app.yaml @@ -5,3 +5,4 @@ app: name: 'Page simple' templates: - {name: "Template 1", file: "site/page/simple/page.html.twig"} + - {name: "Template 2", file: "site/page/simple/page2.html.twig"} diff --git a/src/Controller/Site/PageAdminController.php b/src/Controller/Site/PageAdminController.php index d86d875..20f1c38 100644 --- a/src/Controller/Site/PageAdminController.php +++ b/src/Controller/Site/PageAdminController.php @@ -13,6 +13,7 @@ use App\Repository\Site\Page\PageRepositoryQuery as RepositoryQuery; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; +use App\Site\PageLocator; /** * @Route("/admin/site/page") @@ -57,10 +58,13 @@ class PageAdminController extends AdminController EntityFactory $factory, EntityManager $entityManager, RepositoryQuery $repositoryQuery, + PageLocator $pageLocator, Request $request ): Response { $entity = $repositoryQuery->filterById($entity)->findOne(); - $form = $this->createForm(EntityType::class, $entity); + $form = $this->createForm(EntityType::class, $entity, [ + 'pageConfiguration' => $pageLocator->getPage(get_class($entity)), + ]); if ($request->isMethod('POST')) { $form->handleRequest($request); diff --git a/src/Entity/Site/Page/Block.php b/src/Entity/Site/Page/Block.php index 0909d0d..902c580 100644 --- a/src/Entity/Site/Page/Block.php +++ b/src/Entity/Site/Page/Block.php @@ -27,7 +27,7 @@ class Block private $name; /** - * @ORM\Column(type="text") + * @ORM\Column(type="text", nullable=true) */ private $value; diff --git a/src/Form/Site/Page/PageType.php b/src/Form/Site/Page/PageType.php index e80c8d8..a79d6ed 100644 --- a/src/Form/Site/Page/PageType.php +++ b/src/Form/Site/Page/PageType.php @@ -8,6 +8,7 @@ use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Validator\Constraints\NotBlank; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; class PageType extends AbstractType { @@ -79,6 +80,30 @@ class PageType extends AbstractType ] ); + $builder->add( + 'template', + ChoiceType::class, + [ + 'label' => 'Rendu', + 'required' => true, + 'choices' => call_user_func(function() use ($options) { + $choices = []; + + foreach ($options['pageConfiguration']->getTemplates() as $template) { + $choices[$template['name']] = $template['file']; + } + + return $choices; + }), + 'attr' => [ + ], + 'constraints' => [ + new NotBlank(), + ], + ] + ); + + $builder->getData()->buildForm($builder); } @@ -86,6 +111,7 @@ class PageType extends AbstractType { $resolver->setDefaults([ 'data_class' => Page::class, + 'pageConfiguration' => null, ]); } } diff --git a/templates/site/page/simple/page.html.twig b/templates/site/page/simple/page.html.twig index 3b78c55..6ab1d64 100644 --- a/templates/site/page/simple/page.html.twig +++ b/templates/site/page/simple/page.html.twig @@ -1,3 +1,5 @@ +template 1
+ Node : {{ _node.label }}
Menu : {{ _menu.label }}
Navigation : {{ _navigation.label }}
diff --git a/templates/site/page/simple/page2.html.twig b/templates/site/page/simple/page2.html.twig new file mode 100644 index 0000000..ffb52bc --- /dev/null +++ b/templates/site/page/simple/page2.html.twig @@ -0,0 +1,8 @@ +template 2
+ +Node : {{ _node.label }}
+Menu : {{ _menu.label }}
+Navigation : {{ _navigation.label }}
+ +Page : {{ _page.title.value }}
+Content : {{ _page.content.value|raw }}
diff --git a/templates/site/page_admin/_form.html.twig b/templates/site/page_admin/_form.html.twig index d6305e1..514278d 100644 --- a/templates/site/page_admin/_form.html.twig +++ b/templates/site/page_admin/_form.html.twig @@ -11,7 +11,7 @@ {% endset %} {% set formOthers %} - {% for item in ['name'] %} + {% for item in ['name', 'template'] %} {{ form_row(form[item]) }} {% endfor %} {% endset %}