add page template form
This commit is contained in:
parent
4c30b45c0a
commit
8ec9c75953
|
@ -5,3 +5,4 @@ app:
|
||||||
name: 'Page simple'
|
name: 'Page simple'
|
||||||
templates:
|
templates:
|
||||||
- {name: "Template 1", file: "site/page/simple/page.html.twig"}
|
- {name: "Template 1", file: "site/page/simple/page.html.twig"}
|
||||||
|
- {name: "Template 2", file: "site/page/simple/page2.html.twig"}
|
||||||
|
|
|
@ -13,6 +13,7 @@ use App\Repository\Site\Page\PageRepositoryQuery as RepositoryQuery;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
use Symfony\Component\Routing\Annotation\Route;
|
use Symfony\Component\Routing\Annotation\Route;
|
||||||
|
use App\Site\PageLocator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Route("/admin/site/page")
|
* @Route("/admin/site/page")
|
||||||
|
@ -57,10 +58,13 @@ class PageAdminController extends AdminController
|
||||||
EntityFactory $factory,
|
EntityFactory $factory,
|
||||||
EntityManager $entityManager,
|
EntityManager $entityManager,
|
||||||
RepositoryQuery $repositoryQuery,
|
RepositoryQuery $repositoryQuery,
|
||||||
|
PageLocator $pageLocator,
|
||||||
Request $request
|
Request $request
|
||||||
): Response {
|
): Response {
|
||||||
$entity = $repositoryQuery->filterById($entity)->findOne();
|
$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')) {
|
if ($request->isMethod('POST')) {
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
|
@ -27,7 +27,7 @@ class Block
|
||||||
private $name;
|
private $name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ORM\Column(type="text")
|
* @ORM\Column(type="text", nullable=true)
|
||||||
*/
|
*/
|
||||||
private $value;
|
private $value;
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
use Symfony\Component\Validator\Constraints\NotBlank;
|
use Symfony\Component\Validator\Constraints\NotBlank;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||||
|
|
||||||
class PageType extends AbstractType
|
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);
|
$builder->getData()->buildForm($builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,6 +111,7 @@ class PageType extends AbstractType
|
||||||
{
|
{
|
||||||
$resolver->setDefaults([
|
$resolver->setDefaults([
|
||||||
'data_class' => Page::class,
|
'data_class' => Page::class,
|
||||||
|
'pageConfiguration' => null,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
template 1<br>
|
||||||
|
|
||||||
Node : {{ _node.label }}<br>
|
Node : {{ _node.label }}<br>
|
||||||
Menu : {{ _menu.label }}<br>
|
Menu : {{ _menu.label }}<br>
|
||||||
Navigation : {{ _navigation.label }}<br>
|
Navigation : {{ _navigation.label }}<br>
|
||||||
|
|
8
templates/site/page/simple/page2.html.twig
Normal file
8
templates/site/page/simple/page2.html.twig
Normal 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>
|
|
@ -11,7 +11,7 @@
|
||||||
{% endset %}
|
{% endset %}
|
||||||
|
|
||||||
{% set formOthers %}
|
{% set formOthers %}
|
||||||
{% for item in ['name'] %}
|
{% for item in ['name', 'template'] %}
|
||||||
{{ form_row(form[item]) }}
|
{{ form_row(form[item]) }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endset %}
|
{% endset %}
|
||||||
|
|
Loading…
Reference in a new issue