Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 西蒙尼。如何构建表单?_Symfony_Symfony4_Symfony 4.2 - Fatal编程技术网

Symfony 西蒙尼。如何构建表单?

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/

如何实现接受以下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 '';
    }
}

也许可以尝试使用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,
        ]);
    }
}