ログインエラーが発生した場合、エラーメッセージ(「資格情報が不正です」)をカスタマイズしたいと思います。私はそれをしますが、動作しません。これはテンプレートログインです:
{% if error %}
<div>{{ error.message|trans }}</div>
{% endif %}<form action="{{ path('login_check') }}" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="_username" value="{{ last_username }}" />
<label for="password">Password:</label>
<input type="password" id="password" name="_password" />
<input type="hidden" name="_target_path" value="/account" />
<input type="submit" name="login" />
ファイルconfig.yml私はこれを持っています:
framework:
#esi: ~
translator: { fallback: "%locale%" }
parametre.ymlに私はこれを持っています:
locale: en
MyBundle/Resources/translations /messages.en.ymyディレクトリにファイルを追加しました。
security:
login:
username: "Username:"
password: "Password:"
submit: Login
forgot_username: "Forgot username"
forgot_password: "Forgot password"
registration: register
# Security
"Bad credentials": "Your user name or password are incorrect."
しかし、常に悪い資格情報のエラーメッセージがあります
問題は、エラーメッセージの文字列の最後にdot(。)があることです。
twigトリムフィルターを使用してこれを修正できます:
{{ error|trim('.')|trans({}, 'FOSUserBundle') }}
私のログインフォームには:
{# Error login form #}
{% if error %}
<div class="alert alert-danger">
<strong>{% trans %}login.error{% endtrans %}!</strong> {{ error.messageKey|trans({}, 'messages') }}
</div>
{% endif %}
ここで、「メッセージ」は翻訳のドメインを参照するため、または翻訳ファイルの名前を使用する場合に重要です。私の場合 : messages.en.yml
Fosuserbundle 1.3.5では、これをmessage.ymlに入れる必要があります。
"Invalid credentials." : Bad email/password combination
これがお役に立てば幸いです
Bad Credentials
エラーは、どの親グループ(security.login
またはドメイン)の一部でもありません。
それを翻訳するには、キーと値のペアを通常のmessages.<locale>.<format>
ファイルに追加する必要があります...
Acme/DemoBundle/Resources/translations/messages.en.yml
"Bad Credentials": Incorrect username and/or password
// Other stuff
acme_demo:
form:
cats: Cats
参考までに...
この答えは(ほとんど)次のいずれかにあります:
間違った翻訳ドメインを使用しています。
FOSUserBundleは、FOSUserBundle
の代わりにmessages
を使用します。デフォルトテンプレートを見てください。
バンドル内の翻訳ファイルは次の場所に保存されます。
<bundle>/Resources/translations/<translationDomain>.<locale>.<format>
解決策:
翻訳ファイルの名前をFOSUserBundle.<locale>.<format>
に変更します。その後、この問題を解決するためにキャッシュをクリアします。
MyBundle/Resources/translations /messages.en.ymlに記述されているコードを次のように変更します。
Bad credentials.: "Invalid user/password"
しない:login:
の下で使用しないでください直接書く
あなたが好きにする必要があります:
<div>{{ error|trans }}</div>
の代わりに:
<div>{{ error.message|trans }}</div>
それは私のために働いた。
fosUserBundleを使用せず、すべての手順を実行しますが、同じメッセージエラーが表示されます。資格情報が正しくありません。
「BadCredentials」というメッセージにドットがありません。 「不正な資格情報」である可能性があります。
バンドルの下でのみ、この行の翻訳で翻訳ファイルを上書きできます
翻訳ドメインを追加することを忘れないでください
{{ error|trans({}, 'FOSUserBundle') }}
またはグローバルに
{% trans_default_domain 'FOSUserBundle' %}
注:このソリューションは、FOSuserBundleでテストされています。質問された人は、FOSuserBundleを使用していないと言っています。