如何使用HTML
中的class
将<input>
FormBuilder
属性设置为表单Symfony2
?
这样的事情:
->add('birthdate', 'date',array(
'input' => 'datetime',
'widget' => 'single_text',
'attr' => array(
'class' => 'calendar'
)
))
{{ form_widget(form.birthdate) }}
我希望此input
字段的属性class
设置为 日历
答案 0 :(得分:117)
您可以从树枝模板中执行此操作:
{{ form_widget(form.birthdate, { 'attr': {'class': 'calendar'} }) }}
来自http://symfony.com/doc/current/book/forms.html#rendering-each-field-by-hand
答案 1 :(得分:110)
您可以使用FormBuilder执行此操作。将其添加到FormBuilder中的数组:
'attr'=> array('class'=>'span2')
答案 2 :(得分:27)
如果你想在控制器中设置属性,Acyra的答案会以正确的方式引导,但有很多不准确之处。
是的,您可以使用attr
属性(2.1版本引入here和here for the 2.0)直接使用FormBuilder,如下所示:
->add('birthdate', 'date',array(
'input' => 'datetime',
'widget' => 'single_text',
'attr' => array('class'=>'calendar')
))
“功能被破坏”并非如此。它运作得很好!
Symfony2并不是将HTML class
属性应用于标签和输入(至少从2.1版本开始)。
此外,由于attr
属性本身就是一个数组,因此您可以传递要为该字段呈现的任何HTML属性。如果您想传递HTML5 data-
属性,那将非常有用。
答案 3 :(得分:5)
您可以在表单类的选项中添加它:
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\MyEntity',
'attr' => array(
'class' => 'form-horizontal'
)
));
}
答案 4 :(得分:4)
DirectoryIndex app.php
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
RewriteRule .? %{ENV:BASE}/app.php [L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
RedirectMatch 302 ^/$ /app.php/
</IfModule>
</IfModule>
答案 5 :(得分:3)
像这样:
{{ form_widget(form.description, { 'attr': {'class': 'form-control', 'rows': '5', 'style': 'resize:none;'} }) }}
答案 6 :(得分:1)
您可以在Twig或FormClass中进行此操作,如上面的示例所示。但是您可能想在控制器中决定您的表格应该获得哪个类。请记住,一般而言,控制器中没有太多逻辑!
$form = $this->createForm(ContactForm::class, null, [
'attr' => [
'class' => 'my_contact_form'
]
]);
答案 7 :(得分:0)
呈现给定字段的HTML小部件。如果将此应用于整个表单或字段集合,则将呈现每个基础表单行。
{# render a field row, but display a label with text "foo" #}
{{ form_row(form.name, {'label': 'foo'}) }}
form_row()的第二个参数是变量数组。 Symfony中提供的模板仅允许覆盖标签,如上例所示。
请参阅“有关表单变量的更多信息”以了解变量参数。