我正在使用一个API,它作为响应的一部分,返回一个名为"form"的数组.这是一个字段名称,数据类型和值的数组.
根据当前正在使用的API端点,这些字段的数量和名称可能会有所不同.但是表单数组的结构总是一样的.因此,就Symfony而言,这个过程如下:
基本上,这种形式只不过是一种高级搜索形式.系统中的实体绝对没有链接.
因此,对Symfony2不熟悉,在阅读本文档(http://symfony.com/doc/2.0/book/forms.html#building-the-form)后,我尝试通过创建以下函数在控制器中执行此操作:
/**
* 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();
}
Run Code Online (Sandbox Code Playgroud)
我得到的是
Fatal error: Call to undefined method Symfony\Component\Form\FormBuilder::createView() in .... (my controller file)
Run Code Online (Sandbox Code Playgroud)
奇怪的是,如果我按照文档示例添加字段和getForm()调用链,那很好.
我在这做错了什么?
啊想通了.这条线
$form->getForm();
Run Code Online (Sandbox Code Playgroud)
该方法返回一个Form对象,而我将其视为一个setter.
所以工作控制器功能如下:
/**
* 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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7440 次 |
| 最近记录: |