У меня проблема с символической формой в Symfony2. (2.7.0)
Действие:
public function registerProcessAction(Request $request){ $form = $this->createForm(new RegistrationType(), new Registration()); $form->handleRequest($request); if ($form->isValid()) { die('valid'); } else{ die('invalid'); } }
И моя форма:
public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'data_class' => 'My\Bundle\Entity\User' )); }
Когда я тестирую форму, всегда показываю ту же ошибку: « Тонер CSRF недопустим. Пожалуйста, попробуйте повторно отправить форму ». Я уверен, что вход скрыт в форме. Это мнение:
<?php echo $view['form']->start($form); echo $view['form']->widget($form); echo $view['form']->end($form); ?>
Кто-нибудь может мне помочь?
Я тестировал, чтобы отключить защиту csrf, например:
Действие:
$form = $this->createForm(new RegistrationType(), new Registration(), array('csrf_protection' => false));
Форма:
public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'data_class' => 'My\Bundle\Entity\User', 'csrf_protection' => false )); }
Но появляется другая ошибка: эта форма не должна содержать дополнительных полей . Поскольку скрытый ввод токена, он еще в форме, и я не знаю, чтобы удалить его.
Спасибо!
У меня есть собственный поставщик проверки подлинности, как описано здесь . В какой-то момент в методе handle()
Listener я вызывал $request->getSession()->migrate()
, что вызывало проблему для меня. Удаление вызова для переноса сеанса решило проблему.
Интересно, было ли это коммит, который нарушил мой прослушиватель аутентификации?