2012-09-24 37 views
0

我想設置用戶註冊的功能:用戶可以輸入之前已經生成並存儲在表格中的優惠券代碼。該字段與用戶註冊表一起出現。如果他們輸入了一個不存在的代碼,那麼這個表單就不會被驗證,應該會出現一個錯誤信息,告訴他們代碼是無效的。 達到此目的的最佳做法是什麼?Symfony2:用戶註冊表中的優惠券字段

我的問題是優惠券字段沒有鏈接到用戶實體。 我可以使用ajax檢查優惠券代碼的有效性,並且只驗證表單,如果代碼存在或字段爲空。 但是,如果我繼續這樣做,我如何訪問我的RegistrationFormHandler中的優惠券代碼數據?其目的是給予輸入有效代碼的用戶特別的權限。

這是一個很好的方法嗎?

回答

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(); 
} 
+0

工作得很好,謝謝!另外,你能解釋一下你爲什麼寧願使用事件訂閱者而不是ajax? Personnaly我更喜歡ajax,所以我用它。 –

+0

@Marronsuisse只是因爲如果你已經通過POST驗證你的用戶實體(沒有Ajax),我會用相同的優惠券... – gremo