在Symfony 2.8中,如果你使用的是FOSUserBundle,并且想要在Twig模板中获取表单的输入字段,你需要使用legacyFormHelper
。但是,需要注意的是,legacyFormHelper
在Symfony 2.8中已经被弃用,并且在Symfony 3.x中被移除。因此,如果你正在使用Symfony 2.8,建议你尽快升级到更新的Symfony版本。
不过,如果你仍然需要在Symfony 2.8中使用legacyFormHelper
,可以按照以下步骤操作:
app/config/config.yml
文件中添加以下配置:
fos_user: db_driver: orm firewall_name: main user_class: Acme\UserBundle\Entity\User from_email: address: webmaster@example.com sender_name: webmaster
RegistrationFormType
:
namespace Acme\UserBundle\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use FOS\UserBundle\Form\Type\RegistrationFormType as BaseRegistrationFormType; class RegistrationFormType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { parent::buildForm($builder, $options); // 添加自定义字段 $builder->add('customField', 'text', array( 'label' => 'Custom Field', )); } public function getParent() { return BaseRegistrationFormType::class; } }
legacyFormHelper
来渲染表单字段。例如,在register.html.twig
中:
{% extends "FOSUserBundle::layout.html.twig" %} {% block fos_user_content %} <h2>Register</h2> {{ form_start(form, {'method': 'post', 'action': path('fos_user_registration_register'), 'attr': {'class': 'fos_user_registration'}}) }} {{ form_widget(form.username) }} {{ form_widget(form.email) }} {{ form_widget(form.plainPassword.first) }} {{ form_widget(form.plainPassword.second) }} {{ form_widget(form.customField) }} <div> <input type="submit" value="{{ 'registration.submit'|trans({}, 'FOSUserBundle') }}" /> </div> {{ form_end(form) }} {% endblock fos_user_content %}
请注意,legacyFormHelper
在Symfony 2.8中已经被弃用,并且在Symfony 3.x中被移除。因此,建议你尽快升级到更新的Symfony版本,并使用标准的表单渲染方法。
领取专属 10元无门槛券
手把手带您无忧上云