如何实现接受以下JSON对象的表单? 我没有定义任何模型,因为我不需要它们。数据已发送
{
"type_of_error": "logic error",
"severity": "normal",
"what_did_you_do": "something",
"what_happened": "blue screen",
"which_result": "full satisfaction",
"requests": [
{
"url": "/api/v1/agent/statistic"
}
]
}
我已经开始构建表格:
class ErrorReportFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('type_of_error', TextType::class, [
'empty_data' => '',
'constraints' => [
new NotBlank()
]
])
->add('severity', TextType::class, [
'empty_data' => '',
'constraints' => [
new NotBlank()
]
])
->add('what_did_you_do', TextType::class, [
'empty_data' => '',
'constraints' => [
new NotBlank()
]
])
->add('what_happened', TextType::class, [
'empty_data' => '',
'constraints' => [
new NotBlank(),
]
])
->add('which_result', TextType::class, [
'empty_data' => '',
'constraints' => [
new NotBlank(),
]
])
->add('requests', CollectionType::class, [
'entry_type' => RequestsFormType::class,
])
;
}
我已经定义了这样的RequestsFormType。怎么了看起来,好像RequestsFormType不会被接受。
class RequestsFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('url', TextType::class, [
'empty_data' => '',
'constraints' => [
new NotBlank()
]
]);
}
public function getBlockPrefix()
{
return '';
}
}
答案 0 :(得分:1)
也许尝试使用CollectionType。
查看此处:https://symfony.com/doc/current/reference/forms/types/collection.html
$builder->add('requests', CollectionType:class, [
'entry_type' => YourCustomType::class,
]);
YourCustomType:
class YourCustomType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('url', TextType::class, []);
$builder->add('method', TextType::class, []);
$builder->add('timestamp', DateTimeType::class, []);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Requests::class,
]);
}
}