add page template form

This commit is contained in:
Simon Vieille 2021-03-19 15:13:08 +01:00
parent 4c30b45c0a
commit 8ec9c75953
7 changed files with 44 additions and 3 deletions

View file

@ -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"}

View file

@ -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);

View file

@ -27,7 +27,7 @@ class Block
private $name;
/**
* @ORM\Column(type="text")
* @ORM\Column(type="text", nullable=true)
*/
private $value;

View file

@ -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,
]);
}
}

View file

@ -1,3 +1,5 @@
template 1<br>
Node : {{ _node.label }}<br>
Menu : {{ _menu.label }}<br>
Navigation : {{ _navigation.label }}<br>

View file

@ -0,0 +1,8 @@
template 2<br>
Node : {{ _node.label }}<br>
Menu : {{ _menu.label }}<br>
Navigation : {{ _navigation.label }}<br>
Page : {{ _page.title.value }}<br>
Content : {{ _page.content.value|raw }}<br>

View file

@ -11,7 +11,7 @@
{% endset %}
{% set formOthers %}
{% for item in ['name'] %}
{% for item in ['name', 'template'] %}
{{ form_row(form[item]) }}
{% endfor %}
{% endset %}