2017-04-24 6 views
0

次のコード行でSilexフォームを取得します。 1つのテキストフィールドと1つのチェックボックス。テキストフィールドには、チームの名前が含まれます。チェックボックスにはユーザーのユーザー名が含まれていなければなりません。チームに追加することができます。Silex:フォームにループを作成するには

$form = $app['form.factory']->createBuilder(FormType::class) 
     ->add('name', TextType::class, array(
      'constraints' => array(new Assert\NotBlank(), new Assert\Length(array('min' => 4,'max' => 64))), 
      'label' => 'Team Name', 
      'required' => 'required', 
      'attr' => array('class' => 'input-field', 'autocomplete' => 'off', 'value' => $team->data()->name), 
      'label_attr' => array('class' => 'label') 
     )) 
     ->add('players', CheckboxType::class, [ 
       'constraints' => array(new Assert\NotBlank()), 
       'label' => $player->username, 
       'attr' => array('class' => 'input-field', 'value' => $player->username), 
       'label_attr' => array('class' => 'label') 
     ]) 
     ->add('submit', SubmitType::class, [ 
      'label' => 'Edit', 
      'attr' => array('class' => 'submit'), 
     ]) 
     ->getForm(); 

私は、次の行使用して、ユーザーの私のリストを取得することができます: '$フォーム変数が1に定義されているので、私は、これらの二つの部分を結合する方法がわからない

$user = new User() 
$user->getList(); 

foreach($user->data() as $player){ 
     ->add('players', CheckboxType::class, [ 
       'constraints' => array(new Assert\NotBlank()), 
       'label' => $player->username, 
       'attr' => array('class' => 'input-field', 'value' => $player->username), 
       'label_attr' => array('class' => 'label') 
     ]) 
    } 

をline 'を'; '最後に。この$フォームをパーツに分割して、ユーザーをループして各ユーザーのチェックボックスを追加するにはどうすればよいですか?

+0

'$ form-> getForm();を実行する前にすべての' add() '(ループを含む)メソッド' – olibiaz

+0

それでは、スクリプトをどのようにしてくれますか?私はまだそれを扱う方法に疑問があるので –

答えて

0

あなたがそれを生成する前にanyfieldを追加したい場合は、あなたが->getForm();

で完了する必要がありそう->getForm();を実行したら、フォームがだからあなたのコードは、おそらくのようになります。「生成」されています。ただ、追加

// add you "static" fields 
$formBuilder = $app['form.factory']->createBuilder(FormType::class) 
    ->add('name', TextType::class, array(
     'constraints' => array(new Assert\NotBlank(), new Assert\Length(array('min' => 4,'max' => 64))), 
     'label' => 'Team Name', 
     'required' => 'required', 
     'attr' => array('class' => 'input-field', 'autocomplete' => 'off', 'value' => $team->data()->name), 
     'label_attr' => array('class' => 'label') 
    )) 
    ->add('players', CheckboxType::class, [ 
      'constraints' => array(new Assert\NotBlank()), 
      'label' => $player->username, 
      'attr' => array('class' => 'input-field', 'value' => $player->username), 
      'label_attr' => array('class' => 'label') 
    ]) 
    ->add('submit', SubmitType::class, [ 
     'label' => 'Edit', 
     'attr' => array('class' => 'submit'), 
    ]); 


$user = new User(); 
$user->getList(); 

// then add your "dynamic" fields 

foreach($user->data() as $player) { 
    $formBuilder->add('players', CheckboxType::class, [ 
      'constraints' => array(new Assert\NotBlank()), 
      'label' => $player->username, 
      'attr' => array('class' => 'input-field', 'value' => $player->username), 
      'label_attr' => array('class' => 'label') 
    ]); 
} 


// then generate your form 
$form = $formBuilder->getForm(); 
関連する問題