diff --git a/src/SumoCoders/FrameworkCoreBundle/Form/Extension/ButtonTypeIconExtension.php b/src/SumoCoders/FrameworkCoreBundle/Form/Extension/ButtonTypeIconExtension.php new file mode 100644 index 0000000..57de9dd --- /dev/null +++ b/src/SumoCoders/FrameworkCoreBundle/Form/Extension/ButtonTypeIconExtension.php @@ -0,0 +1,51 @@ +setAttribute('icon', $options['icon']); + } + + /** + * @param FormView $view + * @param FormInterface $form + * @param array $options + */ + public function buildView(FormView $view, FormInterface $form, array $options) + { + $view->vars['icon'] = $options['icon']; + } + + /** + * @param OptionsResolverInterface $resolver + */ + public function setDefaultOptions(OptionsResolverInterface $resolver) + { + $resolver->setDefaults([ + 'icon' => null, + ]); + } + + /** + * Extend the button field type + * + * @return string The name of the type being extended + */ + public function getExtendedType() + { + return 'Symfony\Component\Form\Extension\Core\Type\ButtonType'; + } +} diff --git a/src/SumoCoders/FrameworkCoreBundle/Resources/config/services.yml b/src/SumoCoders/FrameworkCoreBundle/Resources/config/services.yml index 43f560f..74946ef 100644 --- a/src/SumoCoders/FrameworkCoreBundle/Resources/config/services.yml +++ b/src/SumoCoders/FrameworkCoreBundle/Resources/config/services.yml @@ -43,6 +43,11 @@ services: tags: - { name: form.type_extension, alias: date } + framework.button_type_icon_extension: + class: SumoCoders\FrameworkCoreBundle\Form\Extension\ButtonTypeIconExtension + tags: + - { name: form.type_extension, extended-type: Symfony\Component\Form\Extension\Core\Type\ButtonType } + twig.framework_extension: class: SumoCoders\FrameworkCoreBundle\Twig\FrameworkExtension arguments: diff --git a/src/SumoCoders/FrameworkCoreBundle/Resources/views/Form/fields.html.twig b/src/SumoCoders/FrameworkCoreBundle/Resources/views/Form/fields.html.twig index 86aa4b8..72d4e25 100644 --- a/src/SumoCoders/FrameworkCoreBundle/Resources/views/Form/fields.html.twig +++ b/src/SumoCoders/FrameworkCoreBundle/Resources/views/Form/fields.html.twig @@ -294,3 +294,23 @@ {% endif %} {% endspaceless %} {% endblock form_row %} + +{% block button_widget -%} + {% set attr = attr|merge({class: (attr.class|default('') ~ ' btn')|trim}) %} + {% if label is empty -%} + {%- if label_format is not empty -%} + {% set label = label_format|replace({ + '%name%': name, + '%id%': id, + }) %} + {%- else -%} + {% set label = name|humanize %} + {%- endif -%} + {%- endif -%} + {% if icon|default %} + {% set iconHtml = ' ' %} + {% else %} + {% set iconHtml = '' %} + {% endif %} + +{%- endblock button_widget %}