0

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

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

这是一个好方法吗?

4

1 回答 1

1

在您的表单中添加一个带有 false 的文本字段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();
}
于 2012-09-24T06:35:17.143 回答