加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 将动态生成的表单嵌入到另一个表单中

发布时间:2020-12-13 22:10:21 所属栏目:PHP教程 来源:网络整理
导读:我使用Symfony2.1的FormBuilder在控制器中创建一个动态表单: $form = $this-createFormBuilder($defaultData);$form-add('field','text'); 我想以同样的方式嵌入另一个表单并将其嵌入主表单中. $subForm = $this-createFormBuilder();$subForm-add('subfiel
我使用Symfony2.1的FormBuilder在控制器中创建一个动态表单:

$form = $this->createFormBuilder($defaultData);
$form->add('field','text');

我想以同样的方式嵌入另一个表单并将其嵌入主表单中.

$subForm = $this->createFormBuilder();
$subForm->add('subfield','text');

// Does not work
$form->add('subform',$subForm);

不幸的是,此设置无法正常工作.我找不到任何方法如何将动态生成的子表单添加到动态生成的表单中,如上例所示.

我错过了什么函数调用?

上面的示例代码抛出的异常是

UnexpectedTypeException: Expected argument of type “string or
SymfonyComponentFormFormTypeInterface”,
“SymfonyComponentFormForm” given.

解决方法

推荐的symfony-way是创建单独的FormType类,如上所述.但如果你真的想……

您可以通过调用将动态子表单添加到表单构建器中

$formBuilder->add($subform /* FormBuilder */);

如果使用$this-> createFormBuilder()创建,则此子表单将具有名称“form”;,这意味着您无法添加以这种方式创建的两个或更多子表单 – 较新的子表单将使用相同的名称覆盖之前的子表单.

如果需要添加多个子表单,则必须使用创建其构建器

$this->get('form.factory')->createNamedBuilder($uniqName)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读