表单 – Symfony-Twig:在form_widget中插入fontawesome图标

前端之家收集整理的这篇文章主要介绍了表单 – Symfony-Twig:在form_widget中插入fontawesome图标前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
要验证表单,我使用的是标准:
  1. {{ form_widget(form.save,{'attr': {'class': 'btn btn-sm btn-danger'},'label': 'Submit form'}) }}

我想在按钮中插入一个fontawsome图标.我试过了:

  1. {{ form_widget(form.save,'label': '<i class="fa fa-envelope-o"></i> Submit form'}) }}

但它不起作用;明显

知道怎么做吗?

解决方法

我会在同一视图中定义一个新的表单模板(如果需要重用代码,则在模板中定义).更多细节 here
  1. {% extends '::base.html.twig' %}
  2.  
  3. {% form_theme form _self %}
  4.  
  5. {%- block submit_widget -%}
  6. {%- set type = type|default('submit') -%}
  7.  
  8. {%- if label is empty -%}
  9. {%- if label_format is not empty -%}
  10. {% set label = label_format|replace({
  11. '%name%': name,'%id%': id,}) %}
  12. {%- else -%}
  13. {% set label = name|humanize %}
  14. {%- endif -%}
  15. {%- endif -%}
  16. <button type="{{ type|default('button') }}" {{ block('button_attributes') }}>
  17. <i class="fa fa-envelope-o"></i>
  18. {{ label|trans({},translation_domain) }}
  19. </button>
  20. {%- endblock submit_widget -%}
  21.  
  22.  
  23. {% block content %}
  24. {# ... render the form #}
  25.  
  26. {{ form_row(form.age) }}
  27. {% endblock %}

编辑

您还可以将ButtonType扩展为允许icon_before和icon_after,以便在表单定义中轻松添加图标:

  1. $form->add('submitReportV2Show',SubmitType::class,array(
  2. 'label' => 'My test','icon_before' => 'fa-refresh','icon_after' => 'fa-refresh','attr' => array('class' => 'btn btn-sm btn-success'
  3. )));

创建一个新类src / bundle / Form / Extension:

  1. namespace YourBundle\ToolBoxBundle\Form\Extension;
  2.  
  3. use Symfony\Component\Form\AbstractTypeExtension;
  4. use Symfony\Component\Form\Extension\Core\Type\ButtonType;
  5. use Symfony\Component\Form\FormInterface;
  6. use Symfony\Component\Form\FormView;
  7. use Symfony\Component\OptionsResolver\OptionsResolver;
  8.  
  9. class IconButtonExtension extends AbstractTypeExtension
  10. {
  11. public function getExtendedType()
  12. {
  13. return ButtonType::class;
  14. }
  15.  
  16. public function buildView(FormView $view,FormInterface $form,array $options)
  17. {
  18. $view->vars['icon_before'] = $options['icon_before'] ?? '';
  19. $view->vars['icon_after'] = $options['icon_after'] ?? '';
  20. }
  21.  
  22. public function configureOptions(OptionsResolver $resolver)
  23. {
  24. $resolver->setDefaults([
  25. 'icon_before' => null,'icon_after' => null
  26. ]);
  27. }
  28. }

在服务src / bundle / Resources / config / service.yml中声明它

  1. bundle.tools.form.type_extension.icon_button:
  2. class: YourBundle\ToolBoxBundle\Form\Extension\IconButtonExtension
  3. tags:
  4. - { name: 'form.type_extension',extended_type: 'Symfony\Component\Form\Extension\Core\Type\ButtonType' }

应用程序/资源/视图/表格/ fields.html.twig

  1. {%- block button_widget -%}
  2. {%- if label is empty -%}
  3. {%- if label_format is not empty -%}
  4. {% set label = label_format|replace({
  5. '%name%': name,}) %}
  6. {%- elseif label is same as(false) -%}
  7. {% set translation_domain = false %}
  8. {%- else -%}
  9. {% set label = name|humanize %}
  10. {%- endif -%}
  11. {%- endif -%}
  12.  
  13. <button type="{{ type|default('button') }}" {{ block('button_attributes') }}>
  14. {% if icon_before is defined and icon_before is not null %}
  15. <i class="fa {{ icon_before }}"></i>
  16. {% endif %}
  17. {{ translation_domain is same as(false) ? label : label|trans({},translation_domain) }}
  18. {% if icon_after is defined and icon_after is not null %}
  19. <i class="fa {{ icon_after }}"></i>
  20. {% endif %}
  21. </button>
  22. {%- endblock button_widget -%}

猜你在找的HTML相关文章