首页 > 解决方案 > 如何使用 foreach 循环从我的实体中提取数据以在 formBuilder 中使用它?

问题描述

我在 Symfony 4 的控制器中使用 Formbuilder:

$form = $this->createFormBuilder($item)
      ->add('id', TextType::class, array('attr' => array('class' => 'form-control')))
      ->add('username', TextType::class, array('attr' => array('class' => 'form-control')))
      ->add('email', TextType::class, array('attr' => array('class' => 'form-control')))
      ->add('is_active', TextType::class, array('attr' => array('class' => 'form-control')))
      ->add('password', TextType::class, array('attr' => array('class' => 'form-control')))

我手动创建了实体中的那些字段。我现在要做的是使用循环自动创建这些字段。所以这是我的方法:

  $form = $this->createFormBuilder($item)
      foreach ($item as $field) {
          ->add($field, TextType::class, array('attr' => array('class' => 'form-control')))
      }

但我收到错误消息:

语法错误,意外的“foreach”(T_FOREACH)

标签: formssymfonyforeachcontroller

解决方案


您不能以这种方式链接方法,因为您错过了semicolonbefore foreach

首先,您需要formBuilder使用以下方法定义您的实例:

$form = $this->createFormBuilder($item); // (assuming `$item` is defined).

然后,您可以foreach循环填充它:

$fields = array("id", "username", "email", "is_active", "password");
foreach ($fields as $field) {
    $form->add($field, TextType::class, array('attr' => array('class' => 'form-control')));
}

然后,您的$form遗嘱将包含所有填充的字段。


推荐阅读