我想通过位于顶部的导航栏创建一个可从所有网站获得的登录表单。点击“登录”,打开登录表单下拉列表。我仍然不知道如何继续,我在我的下拉列表中使用了渲染枝条功能,我得到了我的登录表单,但出了点问题: 当我没有登录时,我获得了一个简单的登录表单错误(正常),但只有它,而不是网站的其他部分,而且提示“website / login”也将我重定向到这个登录表单。
我的文件是:
#/ src / Controller / SecurityController.php
#函数进入“类SecurityController扩展Controller”
/**
* @Route("/login", name="login")
*/
public function loginAction(Request $request, AuthenticationUtils $authUtils)
{
if ($this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_REMEMBERED'))
{
return $this->redirectToRoute('homepage');
}
// get the login error if there is one
$error = $authUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authUtils->getLastUsername();
return $this->render(
'security/login.html.twig',
array(
// last username entered by the user
'last_username' => $lastUsername,
'error' => $error,
)
);
}
“navbar.html.twig”中使用的树枝功能是:
{{ render(controller('App\\Controller\\SecurityController::loginAction')) }}
“login.html.twig”如下所示:
{% if error %}
<div>{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}
<form action="{{ path("login_check") }}" method="post">
<div>
<input type="text" required="required" id="username" name="_username" value="{{ last_username }}" placeholder="Adresse email" />
</div>
<div>
<input type="password" required="required" id="password" name="_password" placeholder="Mot de passe" />
</div>
<div>
<input type="checkbox" id="_remember_me" name="_remember_me" checked />
<label for="_remember_me">Se souvenir de moi</label>
</div>
<div>
<button type="submit" name="login">Se connecter</button>
</div>
</form>
可以做我想要的吗? (没有ajax?)