我想在用户注册上设置功能:用户可以输入先前生成并存储在表格中的优惠券代码。该字段与用户注册表单一起显示。如果他们输入的代码不存在,表单应该没有验证,则会出现一条错误消息,告诉他们代码无效。 实现这一目标的最佳做法是什么?
我的问题是优惠券字段未链接到用户实体。 我可以使用ajax检查优惠券代码的有效性,并且只有在代码存在或字段为空时才验证表单。 但如果我继续这样做,我如何在RegistrationFormHandler中访问优惠券代码数据?目的是为输入有效代码的用户提供特殊权限。
这是一个很好的方法吗?
答案 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();
}