Symfony 西蒙尼。如何构建表单?
如何实现接受以下JSON对象的表单? 我没有定义模型,因为我不需要它们。数据被发送Symfony 西蒙尼。如何构建表单?,symfony,symfony4,symfony-4.2,Symfony,Symfony4,Symfony 4.2,如何实现接受以下JSON对象的表单? 我没有定义模型,因为我不需要它们。数据被发送 { "type_of_error": "logic error", "severity": "normal", "what_did_you_do": "something", "what_happened": "blue screen", "which_result": "full satisfaction", "requests": [ { "url": "/api/
{
"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 '';
}
}
也许可以尝试使用CollectionType 请看这里: 您的自定义类型:
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,
]);
}
}
如何定义url、方法和时间戳?在Collectiontype中给出参数:
'entry\u type'=>YourCustomType::class,
创建一个自定义表单并在生成器中添加url、方法和时间戳我应该定义一个额外的类吗?没有别的解决办法吗?以及如何在buildForm方法中创建自定义表单?是的,您应该创建一个自定义类型,如RequestsType,并在FormBuilder中添加参数:url、方法和时间戳。我不知道是否还有其他解决办法。这个应该适合你的需要好的,它看起来像是另一种形式中的一种形式。
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,
]);
}
}