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 に答える