フォーム ウィジェットをレンダリングしたい。これは、生成したい生の 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">
しかし、私はラベルをレンダリングしたくありません (慎重にレイアウトされたページを台無しにしています!)。
結局、私はうんざりして、この醜いハッカーを使用しました... (fobj はコントローラーアクションから渡されたフォームオブジェクトです):