当我在symfony4中提交json http post请求时,请求处理未提交我的表单。
我尝试将“方法”选项设置为要发布的表单,但似乎无济于事。我正在为内容类型和接受使用application / json标头。
表格:
class SecurityUserForm extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('username', TextType::class)
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => SecurityUser::class,
'csrf_protection' => false,
]
);
}
}
控制器:
public function postAction(Request $request, SerializerInterface $serializer, UserPasswordEncoderInterface $encoder)
{
try {
$user = new SecurityUser();
$form = $this->createForm(SecurityUserForm::class, $user,
array(
'method' => 'POST'
));
$form->handleRequest($request); //NOT SUBMITTING THE FORM
if ($form->isSubmitted() && $form->isValid()) {
dump("submitted");
} else {
//Stuff
}
} catch (\Exception $e) {
//Exception handling stuff
}
}
我的http帖子:
标题: 内容类型:application / json 接受:application / json
身体: { “用户名”:“粪便” }
我希望$ form-> handleRequest($ request)提交表单,但是由于某种原因,它没有提交。当我在处理请求后转储
dump($form->isSubmitted()) //false
它返回false。 我在做什么错了?
答案 0 :(得分:0)
您需要将$form->handleRequest($request);
更改为$form->submit($request->request->all());