Symfony can't validate User Login Form

55 Views Asked by At

I Am new on Symfony and I have developed a basic user login with AJAX. The form is blocked in validation.
Below I included 3 files, the form "UsersType", an entity "Users" and a controller "UserController".

UsersType class:

class UsersType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options): void
    {
        $builder
            ->add('pseudo')
            ->add('pseudo_change')
            ->add('last_name')
            ->add('first_name')
            ->add('phone')
            ->add('image_path')
            ->add('image_path_change')
            ->add('cover_image_path')
            ->add('cover_image_path_change')
            ->add('email', EmailType::class, ['constraints' => new NotBlank(['message' => 'User name cannot be blank'])])
            ->add('about')
            ->add('quote')
            ->add('quote_change')
            ->add('gender')
            ->add('birthday')
            ->add('location')
            ->add('postal_code')
            ->add('address')
            ->add('additional_info')
            ->add('timezone')
            ->add('time_format')
            ->add('date_format')
            ->add('facebook')
            ->add('twitter_x')
            ->add('instagram')
            ->add('linkedin')
            ->add('pinterest')
            ->add('youtube')
            ->add('privacy_see_profile')
            ->add('privacy_see_profile_activity')
            ->add('privacy_see_profile_friends')
            ->add('privacy_see_profile_progress')
            ->add('privacy_see_profile_watched')
            ->add('privacy_see_profile_watchlist')
            ->add('privacy_see_profile_favorites')
            ->add('privacy_see_profile_ratings')
            ->add('privacy_see_profile_lists')
            ->add('privacy_see_profile_badges')
            ->add('privacy_see_profile_comments')
            ->add('privacy_see_profile_ideas')
            ->add('noti_series_airing')
            ->add('noti_new_series')
            ->add('noti_movie_release')
            ->add('noti_friend_request')
            ->add('noti_comment_reply')
            ->add('noti_comment_like')
            ->add('noti_list_comment')
            ->add('noti_list_like')
            ->add('noti_idea_comment')
            ->add('noti_idea_like')
            ->add('password', TextType::class, ['constraints' => new NotBlank(['message' => 'User name cannot be blank'])])
            ->add('is_banned')
            ->add('is_activated')
            ->add('validation_code')
            ->add('reputation')
            ->add('is_visible')
            ->add('count_site_visit')
            ->add('ip')
            ->add('last_update_in_points')
            ->add('last_activity')
            ->add('register_date', DateTimeType::class, [
                'by_reference' => true,
            ])
            ->add('update_date', DateTimeType::class, [
                  'required' => true,
            ])
            ->add('country', EntityType::class, [
                'class' => Countries::class,
'choice_label' => 'id',
'required' => false,
            ])
            ->add('usersVip', EntityType::class, [
                'class' => UsersVip::class,
'choice_label' => 'id',
'required' => false,
            ])
            ->add('customers', EntityType::class, [
                'class' => Customers::class,
'choice_label' => 'id',
'required' => false,
            ])
            ->add('usersRole', EntityType::class, [
                'class' => UsersRole::class,
'choice_label' => 'id',
'required' => false,
            ])
            ->add('bans', EntityType::class, [
                'class' => Bans::class,
'choice_label' => 'id',
'required' => false,
            ])
            ->add('online', EntityType::class, [
                'class' => Online::class,
'choice_label' => 'id',
'required' => false,
            ])
        ;
    }

    public function configureOptions(OptionsResolver $resolver): void
    {
        $resolver->setDefaults([
            'data_class' => Users::class,
        ]);
    }
}

Users entity:

#[ORM\Entity(repositoryClass: UsersRepository::class)]
class Users implements UserInterface, PasswordAuthenticatedUserInterface
{
    #[ORM\Id]
    #[ORM\GeneratedValue]
    #[ORM\Column]
    private ?int $id = null;

    #[ORM\Column(length: 255)]
    private ?string $pseudo = null;

    #[ORM\Column(options: ["default" => 0])]
    private ?int $pseudo_change = null;

    #[ORM\Column(length: 255)]
    private ?string $last_name = null;

    #[ORM\Column(length: 255)]
    private ?string $first_name = null;

    #[ORM\Column(length: 100, nullable: true)]
    private ?string $phone = null;

    #[ORM\Column(length: 255)]
    private ?string $image_path = null;

    #[ORM\Column(options: ["default" => 0])]
    private ?int $image_path_change = null;

    #[ORM\Column(type: Types::TEXT, nullable: true)]
    private ?string $cover_image_path = null;
    #[ORM\Column(options: ["default" => 0])]
    private ?int $cover_image_path_change = null;

    #[ORM\Column(length: 180, unique: true)]
    private ?string $email = null;
    /**
     * @var string The hashed password
     */
    #[ORM\Column]
    private ?string $password = null;

Controller:

/**
 *
 * We show login page for connection
 * 
 * @return response
 */
#[Route('/login', name: '_login')]
public function login(TranslatorInterface $translator, 
                      Request $request, 
                      UsersService $usersService): Response
{
    //$users = new Users();

    $form = $this->createForm(UsersType::class);
    $form->handleRequest($request);

    if ($request->isXmlHttpRequest()){
      

        if ($form->isSubmitted() && $form->isValid()) {
            // Récupérer les données du formulaire
            $formData = $form->getData();

            return new JsonResponse(['status' => 'success', 'message' => 'Connexion réussie']);
        } 

    }else{

        return $this->render('user/login.html.twig', [
            'head_title' => $translator->trans('user_login', [], 'user').' | '.$this->settingsService->getParticularSetting('site_name')->getValue(),
            'head_description' => $translator->trans('user_login_meta_description', [], 'user'),
            'user_form' => $form
        ]);

    }

}

When I submit the form, the validator is returning false I don't know why.
When isValid() function is not added the form is processing correctly.

UPDATE:
A token field was missing in my form, that's why I'm getting this error. NOW IT'S FIXED

0

There are 0 best solutions below