我想呈现一个表单小部件。这是我要生成的原始 HTML:
<input type="email" class="input-long" placeholder="Enter Email" name="email" id="email" required="required">
使用这个:
{{ form_row(form.email, { 'type' : 'email', 'attr' : { 'class' : 'input-long', 'placeholder': "Enter Email", 'name': "email", 'id':"email", 'required': "required"}}) }}
未生成所需的输出(例如,输入类型为“文本”)。
如何自定义呈现表单小部件以指定输入类型、占位符等?
更新
这是我的表单类:
class ContactType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('fist_name')
->add('last_name')
->add('email')
->add('token')
->add('is_validated')
->add('created_at')
->add('updated_at')
->add('promotion')
->add('refferer')
;
}
public function getName()
{
return 'acme_contactlistbundle_contacttype';
}
public function getDefaultOptions(array $options)
{
return array(
'data_class' => 'Acme\ContactlistBundle\Entity\Contact',
);
}
}
{{ form.email }}
呈现这个:
<label for="acme_contactlistbundle_contacttype_email" class=" required">Email</label><input id="acme_contactlistbundle_contacttype_email" name="acme_contactlistbundle_contacttype[email]" required="required" type="text">
表单构建时添加小部件电子邮件为add->('email','email')
它呈现了这个:
<label for="acme_contactlistbundle_contacttype_email" class=" required">Email</label><input id="acme_contactlistbundle_contacttype_email" name="acme_contactlistbundle_contacttype[email]" required="required" type="email">
但是,我不想渲染标签(它弄乱了我精心布置的页面!)。
最后,我受够了,使用了这个丑陋的hackery ...(fobj是从控制器动作传入的表单对象):