我在设置表单包装器自定义ID时遇到问题。 $ options ['attr'] ['id']似乎不起作用。传递给createForm()方法的所有选项似乎都被忽略了...... 我正在研究Symfony 2.1 beta 1
表单设置:
$login_form = $this->createForm(new LoginType(), $user, array(
'attr' => array(
'id' => 'login-form'
)
));
传递给视图:
{{ form_widget(login_form) }}
但它产生了:
<div id="login">
<div>
<label class="required">Mobile</label>
<input type="text" maxlength="255" required="required" name="login[mobile]" id="login_mobile">
</div>
<div>
<label class="required">Password</label>
<input type="text" maxlength="255" required="required" name="login[password]" id="login_password">
</div>
</div>
所以表单包装器有id =“login”,而不是“login-form”
答案 0 :(得分:1)
我认为它可以在一个方法中用表格Class完成:
public function getName()
{
return 'login-form';
}
此致 最大
答案 1 :(得分:1)
这个{{ form_widget(login_form) }}
如何像你说的那样生成上面的代码?
<div id="login">
<div>
<label class="required">Mobile</label>
<input type="text" maxlength="255" required="required" name="login[mobile]" id="login_mobile">
</div>
<div>
<label class="required">Password</label>
<input type="text" maxlength="255" required="required" name="login[password]" id="login_password">
</div>
</div>
此{{ form_widget(login_form) }}
应仅呈现此内容:
<div>
<label class="required">Mobile</label>
<input type="text" maxlength="255" required="required" name="login[mobile]" id="login_mobile">
</div>
<div>
<label class="required">Password</label>
<input type="text" maxlength="255" required="required" name="login[password]" id="login_password">
你的代码中id =“login”的div对我没有任何意义,你必须手动添加div,所以你可以自己更改id
答案 2 :(得分:0)
两年后:) 您可以覆盖AbstractType的setDefaultOptions方法。在Symfony 2.5中测试
class CommentType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->setMethod('POST')
->add('text', 'textarea', array('label' => ' ',
'attr' => array('class' => 'form-control',
'placeholder' => 'Your comment')
))
->add('folder_id', 'hidden', array('label' => ' ',
'attr' => array('class' => 'form-control',
'placeholder' => 'Your comment')
))
->add('link_id', 'hidden', array('label' => ' ',
'attr' => array('class' => 'form-control',
'placeholder' => 'Your comment')
))
->add('save', 'button', array('label' => 'Save',
'attr' => array('class' => 'btn-lg btn-primary')
)
);
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Linkboard\FrontBundle\Document\comment',
'attr' => array('id' => 'comment-form')
));
}
public function getName()
{
return 'comment';
}
}
生成类似的内容;
<form name="comment" method="post" action="" id="comment-form">
.....
</form>