Symfony2:用户注册表单中的优惠券字段

时间:2012-09-24 04:21:31

标签: symfony registration coupon

我想在用户注册上设置功能:用户可以输入先前生成并存储在表格中的优惠券代码。该字段与用户注册表单一起显示。如果他们输入的代码不存在,表单应该没有验证,则会出现一条错误消息,告诉他们代码无效。 实现这一目标的最佳做法是什么?

我的问题是优惠券字段未链接到用户实体。 我可以使用ajax检查优惠券代码的有效性,并且只有在代码存在或字段为空时才验证表单。 但如果我继续这样做,我如何在RegistrationFormHandler中访问优惠券代码数据?目的是为输入有效代码的用户提供特殊权限。

这是一个很好的方法吗?

1 个答案:

答案 0 :(得分:1)

在表单中添加一个带有错误property_path的文本字段:

$builder->add('coupon', 'text', array('property_path' => false));

使用ajax或自定义事件订阅者验证它(我更喜欢后者)。在您的控制器中应该足以检查表单是否有效:

if('POST' === $request->getMethod()) {
    $form->bindRequest($request);
}

if('GET' === $request->getMethod() && $form->isValid()) {
    // Here both user and coupon are valid
    $coupon = $form->get('coupon')->getData();
}