gpt4 book ai didi

Symfony2 createFormBuilder - 动态高级搜索表单

转载 作者:行者123 更新时间:2023-12-04 08:49:49 25 4
gpt4 key购买 nike

我正在使用一个 API,作为响应的一部分,它返回一个名为“form”的数组。这是字段名称、数据类型和值的数组。

这些字段的数量和名称可能会有所不同,具体取决于当前正在使用的 API 端点。但是表格数组的结构总是一样的。因此,就 Symfony 而言,过程如下:

  1. 创建表单对象
  2. 遍历表单数组并将数组元素添加为字段
  3. 将数组发送到 View

基本上,这个表单只不过是一个高级搜索表单。系统中绝对没有指向实体的链接。

所以,作为 Symfony2 的新手,在阅读了本文档 (http://symfony.com/doc/2.0/book/forms.html#building-the-form) 之后,我尝试通过创建 Controller 在 Controller 中执行此操作以下功能:

/**
* Generate a form for each field passed in an array.
*
* @param array $formArray A custom array of fields do be shown in the form
* @return formView
*/
private function generateForm($formArray)
{

// Simple demo for testing
$formArray = array(
0 => array(
'name' => 'FirstName', 'type' =>'text'
),
1 => array(
'name' => 'LastName', 'type' =>'text'
)
);

$form = $this->createFormBuilder($formArray);

foreach($formArray as $field) {
$form->add($field['name'], $field['type']);
}

$form->getForm();


return $form->createView();

}

我从中得到的是

Fatal error: Call to undefined method Symfony\Component\Form\FormBuilder::createView() in .... (my controller file)

奇怪的是,如果我按照文档示例添加字段并调用 getForm() 链,就没问题。

我在这里做错了什么?

最佳答案

啊想通了。这条线

$form->getForm();

该方法返回一个 Form 对象,而我将其视为 setter。

所以工作 Controller 函数如下:

 /**
* Generate a form for each field passed in an array.
*
* @param array $formArray A custom array of fields do be shown in the form
* @return formView
*/
private function generateForm($formArray)
{

$formBuilder = $this->createFormBuilder($formArray);

foreach($formArray as $field) {
$formBuilder->add($field['name'], $field['type']);
}

$form = $formBuilder->getForm();

return $form->createView();

}

关于Symfony2 createFormBuilder - 动态高级搜索表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13337867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com