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 %}