From 0fddd78b116b50da7df42d5f3cdb67cd858d9419 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Sun, 16 May 2021 15:26:27 +0200 Subject: [PATCH] add collection block --- core/Entity/Site/Page/CollectionBlock.php | 22 ++++++++ core/Form/Site/Page/CollectionBlockType.php | 51 +++++++++++++++++++ .../form/bootstrap_4_form_theme.html.twig | 40 +++++++++++++++ 3 files changed, 113 insertions(+) create mode 100644 core/Entity/Site/Page/CollectionBlock.php create mode 100644 core/Form/Site/Page/CollectionBlockType.php diff --git a/core/Entity/Site/Page/CollectionBlock.php b/core/Entity/Site/Page/CollectionBlock.php new file mode 100644 index 0000000..323eb90 --- /dev/null +++ b/core/Entity/Site/Page/CollectionBlock.php @@ -0,0 +1,22 @@ +add( + 'value', + CollectionType::class, + array_merge([ + 'required' => false, + 'label' => false, + ], $options['options']), + ); + } + + /** + * {@inheritdoc} + */ + public function buildView(FormView $view, FormInterface $form, array $options) + { + $view->vars = array_replace($view->vars, [ + 'collection_name' => $options['collection_name'], + 'label_add' => $options['label_add'], + 'label_delete' => $options['label_delete'], + ]); + } + + public function configureOptions(OptionsResolver $resolver) + { + $resolver->setDefaults([ + 'data_class' => Block::class, + 'collection_name' => '', + 'label_add' => 'Add', + 'label_delete' => 'Delete', + 'options' => [], + ]); + } +} diff --git a/core/Resources/views/form/bootstrap_4_form_theme.html.twig b/core/Resources/views/form/bootstrap_4_form_theme.html.twig index 8f05398..ec1c129 100644 --- a/core/Resources/views/form/bootstrap_4_form_theme.html.twig +++ b/core/Resources/views/form/bootstrap_4_form_theme.html.twig @@ -36,3 +36,43 @@ {% endblock %} + +{% block collection_block_widget %} + +
+ {% for item in form.value %} +
+ {% for child in item %} + {{ form_row(child) }} + {% endfor %} +
+ +
+ + + {{ label_delete|trans }} + + +
+ {% endfor %} +
+ +
+ + + {{ label_add|trans }} + +
+ + +{% endblock %}