我正在使用带有Symfony 2.5的FOSUserBundle。 我已覆盖默认注册表单并为其定义了新的URL。
fos_user_registration_register:
path: /user/new.html
defaults: { _controller: FOSUserBundle:Registration:register }
这是表格
class RegistrationFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->remove('plainPassword');
$builder->remove('username');
$builder->remove("email");
$builder->add('terms', 'checkbox', array('required' => true,
'mapped' => false,
'constraints' => new True(array('message' => 'Required!'))));
$builder->add("email", "email", array("required" => true, "mapped" => true, "constraints" => new MailBlacklist()));
}
public function getParent()
{
return 'fos_user_registration';
}
public function getName()
{
return 'my_user_registration';
}
}
最后我将其注册为服务。
当我在URL /user/new.html上显示表单并提交时,它可以正常工作:显示验证错误,如果数据一切正常,则会创建用户。
但是当我在不同的URL(根)上显示完全相同的表单并提交表单时,不会进行验证并且不会保存用户。相反,我被重定向到/user/new.html并看到一个空表格。
我创建了这样的表单
$form = $this->createForm('my_user_registration')->createView();
为什么这不起作用? FOSUserBundle是否会检查引用者?
我的模板
<form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST">
{{ form_widget(form) }}
<div>
<input type="submit" value="Registrieren" />
</div>
</form>
如果有人可以帮助解决这个“小问题”,那会很棒。)
答案 0 :(得分:0)
问题是我的表格的名称。如果我使用FOSUserBundle表单工厂而不是createForm(),它可以工作,名称是正确的