$ form-> isValid () всегда возвращает false - PullRequest
1 голос
/ 19 марта 2020

Я работаю на странице входа на сайт. когда я нажимаю для входа в систему, btn ничего не происходит, но когда я удаляю $ form-> isValid () из кода, он работает нормально после нескольких тестов, я обнаруживаю, что $ form-> isValid () всегда возвращает 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>





  <div class="inset">
        <div class="wrap-input100 " data-validate = "Username is required">

                    {{ form_widget(form.username, {'attr': {'class': 'input100', 'placeholder': 'Username', 'name':'username', 'type': 'text'} }) }}        
        </div>


                    <div class="wrap-input100 validate-input m-b-10" data-validate = "Password is required">

                {{ form_widget(form.password, {'attr': {'class': 'input100', 'placeholder': 'Password', 'name':'password', 'type': 'password'}})}}

                    </div>

  </div>
  <p class="p-container">
    <input type="submit" name="Login" id="go" value="Login">
  </p>
</form>

1 Ответ

2 голосов
/ 20 марта 2020

Это произошло из-за отсутствия токена csrf в форме, поэтому добавьте его перед конечной формой

{{ form_rest(form) }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...