2016-09-30 12 views
1

私はSymfonyを学び始めています。それはかなり素晴らしいフレームワークのように見えますが、いくつかのコンセプトはまだ私にはぼやけていますので、私の疑問をお許しください。Symfony - 同じタイプの複数形

私がしたいことは、私のユーザーが同じページの同じエンティティの複数のインスタンスを追加できるページを作成することです(5としましょう)。「bashのアイテムを追加する」ページ(1ページに複数の行を追加できるphpMyAdminの挿入データページのようなもの)。

エンティティからFormTypeを作成しましたが、1つのエンティティを追加するとすべて正常に機能しますが、複数のエンティティの挿入を処理する方法はわかりません。

FormCollectionを使用してみましたが、何の成功もありませんでした(申し訳ありませんが、私のコードを削除して、私が試したことを示すことはできません...)。私もループで5つの異なるフォームを生成し、名前だけを変更しようとしましたが、どのように扱うかわかりません。

誰かが私に道を示すことができれば、それはあなたから本当に素晴らしいでしょう!前もって感謝します!私はあなたの条件から

+0

CollectionTypeは必要なものです。コントローラにデータを送信し、配列をループしてデータベースにレコードを挿入します。 –

答えて

0

フォームを別のフォームにネストする場合は、必要な数のフォームを追加できます。だから、最初の形式は、例えば、エンティティを...作成した場合:

エンティティフォーム:

// src/AppBundle/Form/TaskType.php 
namespace AppBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 

class TaskType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('name') 
      ->add('task'); 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'AppBundle\Entity\Task', 
     )); 
    } 
} 

コンテナフォーム多くの形式を追加することができます。

// src/AppBundle/Form/ProjectType.php 
namespace AppBundle\Form; 

use src/AppBundle/Form/TaskType.php 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\Form\Extension\Core\Type\SubmitType; 
use Symfony\Component\Form\Extension\Core\Type\CollectionType; 

class ProjectType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('tasks', CollectionType::class, array(
      'entry_type' => TaskType::class, 
      'allow_add' => true // <- don't forgot this part :) 
     )) 
     ->add('save', SubmitType::class); 
    } 
} 

あなたはよいくつかのJavaScriptにコンテナフォームをフックアップする必要があるため、より多くのエンティティフォームを動的に追加することができます。それはdescribed in detail in this cookbook articleです。また、公正な警告:これは眠く、怠け者の脳によって入力され、テストされず、機能していない可能性があります。しかしそれは正しい道にあなたを置くはずです:D good luck!

+1

私は昨日よりもっと集中して座っていました。実際、私はCollectionFormを使って良い軌道に乗っていました。私のページにフォームを動的に追加するために使用されたプロトタイプとすべてのものです。コードのほんの少しの部分が実際に私が始めるのを助けました!ありがとう! – RaphBlanchet

0

symfonyの3.1.4を使用してい

P.Sは、あなたのフォームが大きいではないようです。ですから、AJAXを使ってください。

1つのフォームを読み込み、成功した場合は、投稿をAjax経由で処理します。コントローラーはJsonResponseを介して別の新しいフォームで応答する必要があります。このようにして、ユーザーはすべてのフォームをいっぱいにする必要はなく、より使い勝手の良いものを得ることができます。

希望すると助かります!

関連する問題