Php 使用带有symfony 3的表单将数据获取到数组中

Php 使用带有symfony 3的表单将数据获取到数组中,php,symfony,symfony-forms,Php,Symfony,Symfony Forms,我在这里感觉有点傻,因为我在symfony 3中做了一些复杂的事情,但我不知道,当我尝试简单的任务时,有一些简单的东西是我遗漏的 这应该很简单,但我不能让它工作 在get方法中从请求获取数据非常简单。只要使用“请求->查询('param')”就足够了 但我想使用formtype或form创建一个带有这些参数的索引数组,并利用自动将数据转换为正确类型的优势 我有这个阵列: $booking = ['dateIn' => null, 'dateOut' => null] 这张表呢 $f

我在这里感觉有点傻,因为我在symfony 3中做了一些复杂的事情,但我不知道,当我尝试简单的任务时,有一些简单的东西是我遗漏的

这应该很简单,但我不能让它工作

在get方法中从请求获取数据非常简单。只要使用“请求->查询('param')”就足够了

但我想使用formtype或form创建一个带有这些参数的索引数组,并利用自动将数据转换为正确类型的优势

我有这个阵列:

$booking = ['dateIn' => null, 'dateOut' => null]
这张表呢

$form = $this->createFormBuilder($booking, ['csrf_protection' => false])
            ->setMethod('GET')
            ->add('dateIn', TextType::class)
            ->add('dateOut', TextType::class)
            ->getForm();
当我调用后转储数据时

“/book?dateIn=xxxx&dateOut=xxxxx”

它还是

['dateIn' => null, 'dateOut' => null]
我使用TextType而不是DateType来简化它,并在测试这个东西时排除了其他问题。但我的目标是让这个参数也转换

怎么了?我应该让它“更简单”(避免表单)还是使用真正的预订类等等。我不想使用任何安全复杂性,因为我在这里不需要它


谢谢

默认表单名称是
表单
,因此我认为这应该适用于以下参数:

/预订?[form]dateIn=xxxx和[form]dateOut=xxxxx

您可以使用formFactory服务修改表单名称,例如:

$form = $this->get('form.factory')->createNamedBuilder('','Symfony\Component\Form\Extension\Core\Type\FormType', $booking, ['csrf_protection' => false])
            ->setMethod('GET')
            ->add('dateIn', TextType::class)
            ->add('dateOut', TextType::class)
            ->getForm();
或者创建一个经典表单类型并实现
getBlockPrefix
方法并返回一个空字符串


希望这些帮助

谢谢!!表单名称!!!由于我总是使用post或json封装的数据向控制器发送数据,所以我没有注意到那个简单但重要的细节。
$form = $this->get('form.factory')->createNamedBuilder('','Symfony\Component\Form\Extension\Core\Type\FormType', $booking, ['csrf_protection' => false])
            ->setMethod('GET')
            ->add('dateIn', TextType::class)
            ->add('dateOut', TextType::class)
            ->getForm();