i'm using symfony 3.3
I'have created FormBuilder for Login
this is my Route controller:
/**
* @Route("/login", name="app.login")
*/
public function loginAction()
{
$form = $this->createForm(LoginType::class);
return $this->render('@site_theme/UserLogin.html.twig', ['form' => $form->createView()]);
}
and my Twig:
{{ form_start(form, {'action': path('sec_check'), 'method': 'POST'}) }}
{{ form_errors(form) }}
{{ form_row(form.username) }}
{{ form_row(form.plainPassword) }}
<input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}"/>
{{ form_row(form.submit) }}
{{ form_end(form) }}
My LoginType of FormBuilder:
<?php
namespace AppBundle\Forms;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormError;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Security\Core\Security;
/* TYPES */
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
class LoginType extends AbstractType
{
private $requestStack;
public function __construct(RequestStack $requestStack)
{
$this->requestStack = $requestStack;
}
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('username', EmailType::class, [
'attr' => ['required' => true, 'placeholder' => 'email'],
'label' => false
])
->add('plainPassword', PasswordType::class, [
'attr' => ['required' => true, 'placeholder' => 'password'],
'label' => false
])
->add('submit', SubmitType::class, [
'label' => 'enter',
'attr' => ['class' => 'btn-login'],
]);
$request = $this->requestStack->getCurrentRequest();
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($request) {
if ($request->attributes->has(Security::AUTHENTICATION_ERROR)) {
$error = $request->attributes->get(Security::AUTHENTICATION_ERROR);
} else {
$error = $request->getSession()->get(Security::AUTHENTICATION_ERROR);
}
if ($error) {
$event->getForm()->addError(new FormError($error->getMessage()));
}
});
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'csrf_token_id' => 'authenticate',
'csrf_field_name' => 'login',
'intention' => 'authenticate',
'attr' => ['role' => 'form', 'class' => 'navbar-form'],
'method' => 'POST'
]);
}
}
when i try to login i getting:
Bad credentials.
first of all, how can i print all the data [username,password]
that was send?
how can i fix this issue?
thanks a lot
I fixed it by remove login_username to _username
$form = $this->get('form.factory')->createNamed(null, LoginType::class);