Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 登录表单不工作,在Symfony2中提交后继续加载_Php_Symfony - Fatal编程技术网

Php 登录表单不工作,在Symfony2中提交后继续加载

Php 登录表单不工作,在Symfony2中提交后继续加载,php,symfony,Php,Symfony,我正在用Symfony2做一个博客应用程序,我想做一个登录表单。 到目前为止我所做的: 已将我的用户实体与安全性连接 制作表格 已配置路由和安全性.yml 它就是不想工作。当我尝试提交用户名和密码时,我得到的只是一个登录表单。我认为这是路线的问题,但我不明白这一点。有人能告诉我哪里有错误吗 安全控制器: <?php namespace BlogBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Control

我正在用Symfony2做一个博客应用程序,我想做一个登录表单。 到目前为止我所做的:

  • 已将我的用户实体与安全性连接
  • 制作表格
  • 已配置路由和安全性.yml
  • 它就是不想工作。当我尝试提交用户名和密码时,我得到的只是一个登录表单。我认为这是路线的问题,但我不明白这一点。有人能告诉我哪里有错误吗

    安全控制器:

    <?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中检查路径,以登录检查也

    我认为您的路由配置有问题。我知道有问题,但我只是想将其用于学习目的,放弃它似乎并不正确。