2014-07-30 3 views
0

Я только начал новый проект Symfony2, где я использовал generate:doctrine:crud быстро масштабировать несколько взглядов, форм и т.д.Symfony2/Twig - добавить классы элементов формы

Сгенерированный код формы просто : {{ form(form) }}, но включает в себя общую кнопку создания или удаления. Мне было интересно, как я могу добавить класс к этим универсальным кнопкам или каким-либо образом изменить их, поскольку он просто включен в {{ form(form) }}?

Для справки Я использую Twitter Bootstrap для быстрого применения некоторых стилей, поэтому я не хочу менять css на основе кнопки отправки.

Спасибо!

+0

1. подробнее о форме темы Symfony в целом: http://symfony.com/doc/current/cookbook/form/form_customization.html 2. Если вы используете TW Bootstrap вы м заинтересуйтесь следующим: http://bootstrap.braincrafted.com/ – Crozin

+0

Просто добавьте twt bootstrap btn-class непосредственно из FormBuilder, как это: 'attr' => array ('class' => 'btn btn-alert') –

ответ

1

Вы можете указать классы CSS в классе построителя форм, чтобы избежать заполнения шаблона Twig html даже для визуализации формы по отдельности.

Когда вы вызываете {{ form(form) }}, вы используете помощник для упрощения кода, поэтому вам не нужно звонить form_widget для каждого из ваших полей, но при этом вы не можете контролировать точное отображение в шаблоне. Для этого вам нужно указать класс, который будет применяться к полю.

В файле WhateverType.php внутри папки Forms у вас есть построитель форм. Там вы должны иметь что-то вроде:

$builder 
     ->add('text') 
     ->add('whatever') 

Там вы должны добавить классы:

$builder 
     ->add('text', 'attr'=> array('class'=>'btn') 
     ->add('whatever') 

Затем, когда ваша форма отображается в шаблоне, он будет применять классы, которые вы указали в строитель.

1

После выполнения dmnptr's answer (нарушение формы на части), вы можете передать массив аргументов, каждый из form/form_row/form_label и т.д. по:

{{ form(form, { 'attr': { 'class': 'your-css-class-1 your-css-class-2' } }) }} 

The attr наборов Param атрибутов для элемента, так что выше будет производить:

<form class="your-css-class-1 your-css-class-2" ... 
Смежные вопросы