php json表单处理,php – Symfony 3 – 如何使用表单处理JSON请求

我很难弄清楚如何使用Symfony表单处理

JSON请求(使用v3.0.1).

这是我的控制器:

/**

* @Route("/tablet")

* @Method("POST")

*/

public function tabletAction(Request $request)

{

$tablet = new Tablet();

$form = $this->createForm(ApiTabletType::class, $tablet);

$form->handleRequest($request);

if ($form->isValid()) {

$em = $this->getDoctrine()->getManager();

$em->persist($tablet);

$em->flush();

}

return new Response('');

}

我的形式:

class ApiTabletType extends AbstractType

{

public function buildForm(FormBuilderInterface $builder, array $options)

{

$builder

->add('macAddress')

;

}

public function configureOptions(OptionsResolver $resolver)

{

$resolver->setDefaults([

'data_class' => 'AppBundle\Entity\Tablet'

]);

}

}

当我发送POST请求并将Content-Type标头正确设置为application / json时,我的表单无效…所有字段都为空.

如果我评论if($form-> isValid())行,这是我得到的异常消息:

An exception occurred while executing ‘INSERT INTO tablet

(mac_address, site_id) VALUES (?, ?)’ with params [null, null]:

我每次尝试发送不同的JSON,结果相同:

> {“id”:“9”,“macAddress”:“5E:FF:56:A2:AF:15”}

> {“api_tablet”:{“id”:“9”,“macAddress”:“5E:FF:56:A2:AF:15”}}

“api_tablet”是getBlockPrefix返回的内容(Symfony 3相当于Symfony 2中的表单类型getName方法).

谁能告诉我我做错了什么?

更新:

我尝试在我的表单类型中覆盖getBlockPrefix.表单字段不再有前缀,但仍然没有运气:/

public function getBlockPrefix()

{

return '';

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值