Как я могу получить данные из моего объекта с помощью цикла foreach, чтобы использовать его в formBuilder? - PullRequest
0 голосов
/ 24 августа 2018

Я использую Formbuilder в моем контроллере в Symfony 4:

$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)

1 Ответ

0 голосов
/ 24 августа 2018

Вы не можете связать методы таким образом, поскольку вы пропустили semicolon до 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 будет содержать все заполненные поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...