如果出现登录错误,我想自定义错误消息('凭据错误')。 我这样做但不起作用。 这是模板登录:
{% 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."
但我总是有错误的凭据错误消息
答案 0 :(得分:5)
问题是错误消息在字符串末尾有点(。)。
您可以使用树枝修剪滤镜来纠正此问题:
{{ error|trim('.')|trans({}, 'FOSUserBundle') }}
答案 1 :(得分:4)
在我的登录表单中,我有:
{# 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
我希望这会有所帮助
答案 2 :(得分:2)
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
仅供参考......
这个答案(差不多)可以在以下任何一个中找到:
Customize Authentication - Login Symfony2 Messages
Recommended way of translating authentication errors in symfony2
答案 3 :(得分:1)
您使用了错误的翻译域。
FOSUserBundle使用FOSUserBundle
代替messages
。请查看默认 template 。
捆绑包内的翻译文件存储在:
<bundle>/Resources/translations/<translationDomain>.<locale>.<format>
<强>溶液强>
将翻译文件重命名为FOSUserBundle.<locale>.<format>
。然后清除缓存以解决此问题。
答案 4 :(得分:0)
只是信息我没有使用FosUserBundle而且我按照每一步但是相同的消息错误不良凭据
答案 5 :(得分:0)
你需要喜欢:
<div>{{ error|trans }}</div>
而不是:
<div>{{ error.message|trans }}</div>
它对我有用。
答案 6 :(得分:0)
消息“Bad Credentials”错过了一个点。 它可能是“坏证书”。
您只能在捆绑
下翻译此行,才能覆盖翻译文件不要忘记添加翻译域
{{ error|trans({}, 'FOSUserBundle') }}
或全球
{% trans_default_domain 'FOSUserBundle' %}
注意:此解决方案使用FOSuserBundle进行测试,因为hwo问他说他没有使用它。