add page template form
This commit is contained in:
parent
4c30b45c0a
commit
8ec9c75953
|
@ -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"}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -27,7 +27,7 @@ class Block
|
|||
private $name;
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="text")
|
||||
* @ORM\Column(type="text", nullable=true)
|
||||
*/
|
||||
private $value;
|
||||
|
||||
|
|
|
@ -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,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
template 1<br>
|
||||
|
||||
Node : {{ _node.label }}<br>
|
||||
Menu : {{ _menu.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 %}
|
||||
|
||||
{% set formOthers %}
|
||||
{% for item in ['name'] %}
|
||||
{% for item in ['name', 'template'] %}
|
||||
{{ form_row(form[item]) }}
|
||||
{% endfor %}
|
||||
{% endset %}
|
||||
|
|
Loading…
Reference in a new issue