gpt4 book ai didi

Symfony2 呈现表单小部件 form_row()(HTML5 考虑)

转载 作者:行者123 更新时间:2023-12-04 18:22:00 28 4
gpt4 key购买 nike

我想呈现一个表单小部件。这是我要生成的原始 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 是从 Controller 操作传入的表单对象):

最佳答案

如果您对表单呈现的要求与 Symfony2 提供的不同,那么您可以定义自己的小部件。只需扩展表单主题并重新定义所需的 block :

{% form_theme form _self %}
{% block field_widget %}
{% set type = type|default('text') %}
<input type="{{ type }}" {{ block('widget_attributes') }} value="{{ value }}" />
{% endblock field_widget %}

当然,还要检查 documentation on form theming


更新

如果你只想渲染<input>没有 <label> 的标签- 那么你应该用下一种方式重新定义你的字段小部件:

{% block _contact_email_row %}
<div>
{{ form_errors(form) }}
{{ form_widget(form) }}
</div>
{% endblock %}

_contact是给你的 Type名字。
_email用于字段名称。

关于Symfony2 呈现表单小部件 form_row()(HTML5 考虑),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12030441/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com