Php 登录表单不工作,在Symfony2中提交后继续加载
我正在用Symfony2做一个博客应用程序,我想做一个登录表单。 到目前为止我所做的:Php 登录表单不工作,在Symfony2中提交后继续加载,php,symfony,Php,Symfony,我正在用Symfony2做一个博客应用程序,我想做一个登录表单。 到目前为止我所做的: 已将我的用户实体与安全性连接 制作表格 已配置路由和安全性.yml 它就是不想工作。当我尝试提交用户名和密码时,我得到的只是一个登录表单。我认为这是路线的问题,但我不明白这一点。有人能告诉我哪里有错误吗 安全控制器: <?php namespace BlogBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Control
<?php
namespace BlogBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Request;
class SecurityController extends Controller
{
/**
* @Route("login", name="login")
*/
public function loginAction()
{
$authUtil = $this->get('security.authentication_utils');
// error content
$error = $authUtil->getLastAuthenticationError();
// username entered by the user
$lastUsername = $authUtil->getLastUsername();
return $this->render('BlogBundle:Default:login.html.twig', array(
'error' => $error,
'last_username' => $lastUsername)
);
}
}
/**
* @Route("login_check", name="login_check")
*/
public function loginCheck(){
}
登入表格:
<form role="form" action="{{ path('login') }}" method="post">
<div class="form-group">
<input class="form-control" id="username" placeholder="Username" name="_username" type="text" autofocus>
</div>
<div class="form-group">
<input class="form-control" id="password" placeholder="Password" name="_password" type="password" value="">
</div>
<button type="submit" class="btn btn-lg btn-success btn-block">Login</button>
登录
既然已经有一个包可以做到这一点,为什么还要重新发明轮子呢。查看FOSUserBundle。它是一个很棒的捆绑包,提供了一个灵活的安全框架,允许您从配置或数据库加载用户。
希望有帮助 您应该在登录页面安全配置中进行确认:
好吧,看来我已经找到了解决办法。 你看,当你在阅读Symfony 2中制作表单的教程时,它告诉你为登录路径和检查路径创建相同的路径。 我没有意识到的是,此路由与SecurityController中的loginAction关联,因此每当我尝试提交表单时,它都会返回到loginAction,我在那里呈现登录页面 解决方案是在SecurityController中创建另一种方法:
<?php
namespace BlogBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Request;
class SecurityController extends Controller
{
/**
* @Route("login", name="login")
*/
public function loginAction()
{
$authUtil = $this->get('security.authentication_utils');
// error content
$error = $authUtil->getLastAuthenticationError();
// username entered by the user
$lastUsername = $authUtil->getLastUsername();
return $this->render('BlogBundle:Default:login.html.twig', array(
'error' => $error,
'last_username' => $lastUsername)
);
}
}
/**
* @Route("login_check", name="login_check")
*/
public function loginCheck(){
}
我将其留空,但如果需要,可以在其中放置一些异常处理程序,如:
throw new \Exception("Oops")
当然,我改变了post action的形式,并在security.yml中检查路径,以登录检查也我认为您的路由配置有问题。我知道有问题,但我只是想将其用于学习目的,放弃它似乎并不正确。