diff --git a/Form/Extension/ButtonTypeExtension.php b/Form/Extension/ButtonTypeExtension.php new file mode 100644 index 0000000..ea56b76 --- /dev/null +++ b/Form/Extension/ButtonTypeExtension.php @@ -0,0 +1,46 @@ + + * @copyright 2014 André Püschel + * @license http://opensource.org/licenses/MIT The MIT License + * @link http://bootstrap.braincrafted.com Bootstrap for Symfony2 + */ +class ButtonTypeExtension extends AbstractTypeExtension +{ + /** + * {@inheritDoc} + */ + public function buildView(FormView $view, FormInterface $form, array $options) + { + $view->vars['button_class'] = $form->getConfig()->getOption('button_class'); + $view->vars['as_link'] = $form->getConfig()->getOption('as_link'); + } + + /** + * {@inheritdoc} + */ + public function setDefaultOptions(OptionsResolverInterface $resolver) + { + $resolver->setOptional(array('button_class', 'as_link')); + } + + /** + * {@inheritdoc} + */ + public function getExtendedType() + { + return 'button'; + } +} \ No newline at end of file diff --git a/Resources/config/services/form.xml b/Resources/config/services/form.xml index b8165ac..050e45e 100644 --- a/Resources/config/services/form.xml +++ b/Resources/config/services/form.xml @@ -8,6 +8,7 @@ Braincrafted\Bundle\BootstrapBundle\Form\Type\MoneyType Braincrafted\Bundle\BootstrapBundle\Form\Type\FormActionsType Braincrafted\Bundle\BootstrapBundle\Form\Extension\TypeSetterExtension + Braincrafted\Bundle\BootstrapBundle\Form\Extension\ButtonTypeExtension Braincrafted\Bundle\BootstrapBundle\Form\Extension\InputGroupButtonExtension @@ -29,6 +30,10 @@ + + + + diff --git a/Resources/views/Form/bootstrap.html.twig b/Resources/views/Form/bootstrap.html.twig index 2e58d77..a3cf85b 100644 --- a/Resources/views/Form/bootstrap.html.twig +++ b/Resources/views/Form/bootstrap.html.twig @@ -502,11 +502,15 @@ {% set label = name|humanize %} {% endif %} {% if type is defined and type == 'submit' %} - {% set attr = attr|merge({ 'class': (attr.class|default('') ~ ' btn btn-'~attr.type|default('primary'))|trim }) %} + {% set attr = attr|merge({ 'class': (attr.class|default('') ~ ' btn btn-'~button_class|default('primary'))|trim }) %} {% else %} - {% set attr = attr|merge({ 'class': (attr.class|default('') ~ ' btn btn-'~attr.type|default('default'))|trim }) %} + {% set attr = attr|merge({ 'class': (attr.class|default('') ~ ' btn btn-'~button_class|default('default'))|trim }) %} + {% endif %} + {% if as_link is defined and as_link == true %} + {% if attr.icon is defined and attr.icon != '' %}{{ icon(attr.icon) }}{% endif %}{{ label|trans({}, translation_domain) }} + {% else %} + {% endif %} - {% endspaceless %} {% endblock button_widget %}