【发布时间】:2018-02-15 10:27:48
【问题描述】:
我正在 Symfony 3.3
中测试一些“API开发”方法我刚刚浏览了一个教程,它告诉我可以使用 Symfony Forms 来:
自动验证 JSON;
使用 JSON 数据自动填充新实体。
所以我创建了一个方法“POST”,我用它来创建一个资源,比如 USER。
我使用以下 rawbody 发布到该方法: {"name": "foo", "surname": "bar", "userType": 1}
-
教程说我可以通过编写以下代码行来用表单完成这两个“自动操作”:
$data = json_decode($request->getContent(), true); $user = new User(); $form = $this->createForm(UserType::class, $user ); $form->submit($data); $em = $this->getDoctrine()->getManager(); $em->persist($user); $em->flush();
表单类“UserType”有以下几行代码:
namespace FooBundle\Form;
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class)
->add('surname', TextType::class)
->add('userType', ChoiceType::class, array(
'choices' => array(
1 => 'one',
2 => 'two',
3 => 'three',
4 => 'four',
5 => 'five',
6 => 'six',
)
)
)
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(
array(
"data_class" => "FooBundle\Entity\User"
)
);
}
}
但是,当我发布到该端点时,出现以下错误:
执行'INSERT INTO user(name, surname, user_type) VALUES (?, ?, ?)' with params ["foo", "bar", null]:
SQLSTATE[23000]:违反完整性约束:1048 列 'user_type' 不能为空
为什么表单不会自动填写“用户类型”字段?
我在表单的“ChoiceType”字段中做错了吗?
谢谢:)
【问题讨论】:
标签: php forms symfony validation