使用带有 symfony 3 的表单将数据放入数组
get data into array using a form with symfony 3
我在这里感觉有点愚蠢,因为我在 symfony 3 中完成了一些复杂的工作,但我不知道,在尝试如此简单的任务时我缺少一些简单的东西。
这应该很简单,但我做不到。
在get方法中从请求中获取数据非常简单。只用"request->query('param')"就够了。
但我想使用 formtype 或表单创建一个包含这些参数的索引数组,并利用自动将数据转换为正确类型的优势。
我有这个数组:
$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"
$form->handleRequest($request);
$form->getData();
还是
['dateIn' => null, 'dateOut' => null]
我使用 TextType 而不是 DateType 来简化它并在测试这个东西时丢弃其他问题。但我的目标是让这个参数也转换。
怎么了?我应该"simpler"(避免表格)还是使用真实的预订class,等等。我不想使用任何安全复杂性,因为我在这里不需要它。
谢谢!
默认表单名称是 form
所以我认为这应该与参数一起使用,例如:
/book?[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
方法和 return 一个空字符串。
希望对您有所帮助
我在这里感觉有点愚蠢,因为我在 symfony 3 中完成了一些复杂的工作,但我不知道,在尝试如此简单的任务时我缺少一些简单的东西。
这应该很简单,但我做不到。
在get方法中从请求中获取数据非常简单。只用"request->query('param')"就够了。
但我想使用 formtype 或表单创建一个包含这些参数的索引数组,并利用自动将数据转换为正确类型的优势。
我有这个数组:
$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"
$form->handleRequest($request);
$form->getData();
还是
['dateIn' => null, 'dateOut' => null]
我使用 TextType 而不是 DateType 来简化它并在测试这个东西时丢弃其他问题。但我的目标是让这个参数也转换。
怎么了?我应该"simpler"(避免表格)还是使用真实的预订class,等等。我不想使用任何安全复杂性,因为我在这里不需要它。
谢谢!
默认表单名称是 form
所以我认为这应该与参数一起使用,例如:
/book?[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
方法和 return 一个空字符串。
希望对您有所帮助