わかりました。まず、この件に関して同様の質問が寄せられていることを知っています。
しかし、彼らは私の質問に正確には答えていません。作成中のアプリケーションのログイン システムをセットアップしていますが、ログイン認証エラー メッセージを表示しようとするとエラーが発生します。
テンプレートに次のコードがあります。
{% if error %}
{% block message %}{{ error.message }}{% endblock %}
{% endif %}
これは、テンプレートを呼び出しているコントローラーにあるものです。
public function loginAction()
{
$request = $this->getRequest();
$session = $request->getSession();
// get the login error if there is one
if($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)){
$error = $request->attributes->get(
SecurityContext::AUTHENTICATION_ERROR
);
} else {
$error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
$session->remove(SecurityContext::AUTHENTICATION_ERROR);
}
return $this->render(
'SaveSecurityBundle:Security:login.html.twig',
array(
'last_username' => $session->get(SecurityContext::LAST_USERNAME),
'error' => $error,
)
);
}
これはかなり単純なはずですが、ログイン フォームを読み込もうとすると、次のメッセージが表示され続けます。
Impossible to access a key ("message") on a NULL variable ("") in SaveSecurityBundle:Security:login.html.twig at line 5
変数のダンプを試みたerror
ところ、次のようになりました(実際に必要な部分までの行のみを含めています。実際のダンプは数千行です):
object(Symfony\Component\Security\Core\Exception\BadCredentialsException)#49 (8) {
["token":"Symfony\Component\Security\Core\Exception\AuthenticationException":private]=>
object(Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken)#50
["message":protected]=>
string(15) "Bad credentials"
したがって、メッセージはそこにありますが、何らかの理由でエラー オブジェクトを渡すことになっているときに、null 参照を渡しています。
これを修正する方法について完全に途方に暮れています。これまでの唯一の解決策は、error
印刷物をすべて一緒に削除することでした。これにより、ログインしていない理由をユーザーに通知する機能が削除されます。