私はSymfony2とFOSUserBundleを使用しています。userCanonicalバリデーションのラベル名にFOSUserBundleとSymfony2の近く
すでに登録されている登録フォームにユーザー名またはメールアドレスを入力すると、登録フォームの上部にエラーが表示されます。
エラーメッセージをユーザー名/電子メールフィールドに入力するにはどうすればよいですか?
私はSymfony2とFOSUserBundleを使用しています。userCanonicalバリデーションのラベル名にFOSUserBundleとSymfony2の近く
すでに登録されている登録フォームにユーザー名またはメールアドレスを入力すると、登録フォームの上部にエラーが表示されます。
エラーメッセージをユーザー名/電子メールフィールドに入力するにはどうすればよいですか?
読むのドキュメント Rendering each Field by Hand
{{form_errors(form.username)}}
{{form_errors(form.)}}
をテーマ設定フォームを作成し、あなたのバンドルの親としてFOSUserBundleを設定した場合:
// src/Acme/UserBundle/AcmeUserBundle.php
<?php
namespace Acme\UserBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class AcmeUserBundle extends Bundle
{
public function getParent()
{
return 'FOSUserBundle';
}
}
次に、あなた独自の検証を配置することができます。 ymlファイルをconfigフォルダに保存し、一意のconのerrorPathプロパティを設定することができますこのようなstraint:
#validation.yml:
Acme\DemoBundle\Entity\User: # your user entity
constraints:
- Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: { fields: usernameCanonical, errorPath: username, groups: [CustomRegistration, Default] }
はあなたのフォーム上の実際のフィールドの名前としてerrorPathを設定していることを確認します。 `<制約名= "FOS \ UserBundle \バリ\ユニークな"> <オプション名= "プロパティ"> usernameCanonical <オプション名="メッセージ:
メッセージがFOSUserBundleでvalidation.xmlから来ていますグループ ">登録 プロフィール ' ">ユーザ名はすでに <オプション名=を使用している" しかし、登録フォームはusernameCanonicalフィールドをレンダリングしません。したがって、エラーメッセージはどのフィールドにもバインドされません。 このエラーメッセージをユーザー名フィールドに表示するにはどうすればよいですか? –
huzi
@ user1198193私は{{form_errors(form)}}を使用し、私のUserBundleのエラーメッセージを上書きします。 – rtyshyk
問題は、FOSUserBundle制約からのメッセージがグローバルクラスのエラーメッセージであり、プロパティの制約ではないことです。 制約を設定することは可能ですか、または制約をクラス制約からプロパティ制約に変更する必要がありますか? – huzi