为什么 $form->isValid() 总是返回 false?

我正在处理网站的登录页面。当我单击登录按钮时没有任何反应,但是当我 $form->isValid() 从代码中删除时它工作正常。经过几次测试,我发现 $form->isValid() 总是返回 false!我不明白为什么总是这样false!


这是控制器的代码:


/**

 * @Route("/login", name="login", methods={"GET","POST"})

 */


public function login(Request $request): Response

{

    $user = new Admins();

    $form = $this->createFormBuilder($user)

    ->add('username', TextType::class)

    ->add('password', PasswordType::class)

    ->getForm();

    

    $form->handleRequest($request);


    if ($form->isSubmitted() && $form->isValid()) {

        $session =$request->getSession();

        $session->clear();


        $username =$user->getUsername();

        $password =$user->getPassword();


        $repository = $this->getDoctrine()->getRepository(Admins::class);

        $user1=$repository->findOneBy(array('username'=>$username,'password'=>$password));

        if (!$user1)  

        {  

            $this->get('session')->getFlashBag()->add('info','The username or password is incorrect');}

        else 

        {

            if (!$session->has('name'))

            {

                $session->set('username',$user1->getUsername());

                $session->set('rank',$user1->getRank());

                return $this->redirectToRoute('homepage');

             

            }

            

        }            

    }


    return $this->render('login/index.html.twig', [

        'user' => $user,

        'form' => $form->createView(),

    ]);

}

这是查看页面的代码:


<div class="text-center w-full p-t-25 p-b-50">

    {% if app.session.flashBag.has('info') %}

        <div class="btn btn-warning">

            {% for msg in app.session.flashBag.get('info') %}

                {{msg}}

            {% endfor %}

        </div>

    {% endif %}

</div>


<form id="accesspanel" action=" {{ path ('login') }} " method="post">

    <h1 id="litheader">Login Panel

    </h1>



慕慕森
浏览 136回答 1
1回答

胡说叔叔

这是因为表单中没有 csrf 令牌,所以在结束表单之前添加这个{{&nbsp;form_rest(form)&nbsp;}}
打开App,查看更多内容
随时随地看视频慕课网APP