diff --git a/core/Crud/Field/ButtonField.php b/core/Crud/Field/ButtonField.php index 65e986e..fcd4961 100644 --- a/core/Crud/Field/ButtonField.php +++ b/core/Crud/Field/ButtonField.php @@ -3,6 +3,7 @@ namespace App\Core\Crud\Field; use Symfony\Component\OptionsResolver\OptionsResolver; +use Twig\Environment; /** * class ButtonField. @@ -11,6 +12,15 @@ use Symfony\Component\OptionsResolver\OptionsResolver; */ class ButtonField extends Field { + public function buildView(Environment $twig, $entity, array $options, ?string $locale = null) + { + if (isset($options['button_attr_builder']) && is_callable($options['button_attr_builder'])) { + $options['button_attr'] = (array) call_user_func($options['button_attr_builder'], $entity, $options); + } + + return parent::buildView($twig, $entity, $options, $locale); + } + public function configureOptions(OptionsResolver $resolver): OptionsResolver { parent::configureOptions($resolver); @@ -18,11 +28,13 @@ class ButtonField extends Field $resolver->setDefaults([ 'view' => '@Core/admin/crud/field/button.html.twig', 'button_attr' => [], + 'button_attr_builder' => null, 'button_tag' => 'button', ]); $resolver->setAllowedTypes('button_attr', ['array']); $resolver->setAllowedTypes('button_tag', ['string']); + $resolver->setAllowedTypes('button_attr_builder', ['null', 'callable']); return $resolver; } diff --git a/core/Form/Type/CollectionType.php b/core/Form/Type/CollectionType.php new file mode 100644 index 0000000..166d5d5 --- /dev/null +++ b/core/Form/Type/CollectionType.php @@ -0,0 +1,41 @@ +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) + { + parent::configureOptions($resolver); + + $resolver->setDefaults([ + 'collection_name' => '', + 'label_add' => 'Add', + 'label_delete' => 'Delete', + ]); + } + + public function getBlockPrefix() + { + return 'murph_collection'; + } +} 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 7228c94..419f399 100644 --- a/core/Resources/views/form/bootstrap_4_form_theme.html.twig +++ b/core/Resources/views/form/bootstrap_4_form_theme.html.twig @@ -74,3 +74,41 @@ {% endblock %} + +{% block murph_collection_widget %} +
+ {% for item in form %} +
+ {% for child in item %} + {{ form_row(child) }} + {% endfor %} + +
+ + + {{ label_delete|trans }} + + +
+
+ {% endfor %} +
+ +
+ + {{ label_add|trans }} + +
+ + +{% endblock %}