我可以用javascript做到这一点,但我想知道如果我能一个CSS类添加到特定Symfony2的形式选择(不选择领域本身,而是个人的选择)。
例如,我想不同的CSS样式应用到个人“选项”标签中的“选择”。 我只能找到一个方法来添加一个类的标签。
提前致谢。
我可以用javascript做到这一点,但我想知道如果我能一个CSS类添加到特定Symfony2的形式选择(不选择领域本身,而是个人的选择)。
例如,我想不同的CSS样式应用到个人“选项”标签中的“选择”。 我只能找到一个方法来添加一个类的标签。
提前致谢。
您可以覆盖特定部件的布局在您的形式,这意味着你可以重写选择呈现方式,并把自定义代码来检查哪些选项的值是和输出自定义类存在。
您需要自定义布局应用到您的形式,像这样
{% form_theme form 'form_theme.html.twig' %}
然后,布局文件里面你需要重写该特定形式的特定领域(当然,除非你要直接编辑choice_widget在这种情况下使用选择的所有字段都将具备的功能)。
要做到这一点,你需要复制的部件,所以choice_widget,然后将其命名[_formName_fieldName_widget]
所以,如果你的表单名称是事件和您的字段名称是requireTickets,这将会是_events_requireTickets_widget
我想你可以简单地做:
{{ form_widget(form.name, { 'attr' : { 'class' : 'myClass' } }) }}
...作为解释在这里 ,没有创建自己的表单样式。
已经提供的答案都非常好,我觉得@ CriticalImpact的是最灵活的。 但我只是想提一提,如果你使用一个窗体类,你也可以到外地通过表单生成器定义本身添加额外的属性:
class SomeType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('someField', "text", array("attr" => array("class" => "someCssClass")))
->add("save", "submit");
}
}
我已经找到了基本形式这是很有帮助的,因为它仍然可以让你做一个简单的{{ form(someForm) }}
在枝杈文件调用。
(请注意,此解决方案仍然具有@CriticalImpact提到的缺点以上 )
添加像CSS样式个人的选择属性如今可以与实现choice_attr ,如:
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
// ...
$builder->add('attending', ChoiceType::class, array(
'choices' => array(
'Yes' => true,
'No' => false,
'Maybe' => null,
),
'choice_attr' => function($val, $key, $index) {
// adds a class like attending_yes, attending_no, etc
return ['class' => 'attending_'.strtolower($key)];
},
));