我想自定义我的应用程序的所有多个选择:
<select class="selectpicker show-tick" data-size="auto">
...
</select>
我该怎么做?
编辑ncrocfer
这是我的构建表单方法: 这不完整,缺少一些东西......
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title')
->add('misc')
->add('url')
->add('attachment', 'file')
->add('time_estimated')
->add('started_at')
->add('finished_at')
->add('default')
->add('deadline')
->add('priority', 'entity', array(
'class' => 'LanCrmBundle:TaskPriority',
'property' => 'title',
'multiple' => false
))
->add('project', 'entity', array(
'class' => 'LanCrmBundle:Project',
'property' => 'title',
'multiple' => false
))
->add('category', 'entity', array(
'class' => 'LanCrmBundle:TaskCategory',
'property' => 'title',
'multiple' => false
))
->add('user', 'entity', array(
'class' => 'LanSecurityBundle:User',
'property' => 'username',
'multiple' => false
))
->add('products', 'entity', array(
'class' => 'LanCrmBundle:Product',
'property' => 'title',
'multiple' => true
))
;
}
答案 0 :(得分:1)
使用表单文件夹中的attr
属性:
<?php
namespace Foo\BarBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class FooType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('foo', 'choice', array(
'choices' => array(0 => 'Option 1', 1 => 'Option 2'),
'attr' => array('class' => 'selectpicker show-tick', 'data-size' => 'auto'),
))
;
}
}
修改强>
如果你有很多表单,就像你在评论中说的那样,你可以使用form customization。
创建新模板文件:
{# src/Foo/BarBundle/Resources/views/Form/fields.html.twig #}
{% block choice_widget_collapsed %}
{% spaceless %}
<select {{ block('widget_attributes') }}{% if multiple %} multiple="multiple"{% endif %} class="selectpicker show-tick" data-size="auto">
{% if empty_value is not none %}
<option value="">{{ empty_value|trans({}, translation_domain) }}</option>
{% endif %}
{% if preferred_choices|length > 0 %}
{% set options = preferred_choices %}
{{ block('choice_widget_options') }}
{% if choices|length > 0 and separator is not none %}
<option disabled="disabled">{{ separator }}</option>
{% endif %}
{% endif %}
{% set options = choices %}
{{ block('choice_widget_options') }}
</select>
{% endspaceless %}
{% endblock choice_widget_collapsed %}
然后在应用程序配置中导入模板:
# app/config/config.yml
twig:
form:
resources:
- 'FooBarBundle:Form:fields.html.twig'
此更改将对您的所有select
生效。
答案 1 :(得分:0)
使用attr
中的FormBuilder
属性:
'attr' => array('class'=>'selectpicker show-tick', 'data-size'=>'auto')