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

icum 发布于 2019-02-03 coupon 最后更新 2019-02-03 09:04 59 浏览

我想设置用户注册的功能:用户可以输入先前生成并存储在表格中的优惠券代码。该字段与用户注册表一起出现。如果他们输入了一个不存在的代码,那么这个表单就不会被验证,应该会出现一个错误信息,告诉他们代码是无效的。 达到此目的的最佳做法是什么? 我的问题是优惠券字段没有链接到用户实体。 我可以使用ajax检查优惠券代码的有效性,并且只在代码存在或字段为空时验证表单。 但是,如果我这样做,我怎么才能访问我的RegistrationFormHandler中的优惠券代码数据?其目的是给予输入有效代码的用户特别的权限。 这是一个很好的方法吗?

已邀请:

hea

赞同来自:

在表单中添加一个带有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();
}