2012-02-08 17 views
0

私はSymfony2とFOSUserBundleを使用しています。userCanonicalバリデーションのラベル名にFOSUserBundleとSymfony2の近く

すでに登録されている登録フォームにユーザー名またはメールアドレスを入力すると、登録フォームの上部にエラーが表示されます。

エラーメッセージをユーザー名/電子メールフィールドに入力するにはどうすればよいですか?

答えて

0

読むのドキュメント Rendering each Field by Hand

{{form_errors(form.username)}} 
{{form_errors(form.)}} 

または Global Form Theming

+0

メッセージがFOSUserBundleでvalidation.xmlから来ていますグループ "> 登録 プロフィール ' ">ユーザ名はすでに <オプション名=を使用している" しかし、登録フォームはusernameCanonicalフィールドをレンダリングしません。したがって、エラーメッセージはどのフィールドにもバインドされません。 このエラーメッセージをユーザー名フィールドに表示するにはどうすればよいですか? – huzi

+0

@ user1198193私は{{form_errors(form)}}を使用し、私のUserBundleのエラーメッセージを上書きします。 – rtyshyk

+0

問題は、FOSUserBundle制約からのメッセージがグローバルクラスのエラーメッセージであり、プロパティの制約ではないことです。 制約を設定することは可能ですか、または制約をクラス制約からプロパティ制約に変更する必要がありますか? – huzi

0

をテーマ設定フォームを作成し、あなたのバンドルの親として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 <オプション名="メッセージ:

関連する問題