2017-01-17 22 views
1

こんにちは私は同じタイプの複数の行を表示するフォームをSymfonyフォームビルダーで作成する方法を知りました。たとえば、私は画像の配列を持っています:Symfonyフォームビルダー同じタイプの複数の行

この画像のそれぞれにテキストボックスフィールドを表示するフォームを作成します。画像の数が知られていない、1かもしれないまたは30だから私はこれと似たような希望のようになります。私は、各ファイルのタイトルを書くでしょうし、私はすべての行を保存]をクリックするとテキストボックスに

Image 1 displayed | textbox 1 
Image 2 displayed | textbox 2 
Image 3 displayed | textbox 3 

[Save] 

id | name    | url 
------------------------------------------ 
1 | name from textbox 1 | www.image1.com 
2 | name from textbox 2 | www.image2.com 
3 | name from textbox 3 | www.image3.com 

私のエンティティからこのフォームを作成する方法はわかりません。次のように、このフォームをデータベースに保存する必要があります。フォームは複数のテキストボックスをどのように作成するのですか?それぞれを適切なテキストにどのように結び付けるかを知っています。

答えて

0

まず、基本エンティティとイメージエンティティの多対多関係を定義する必要があります。

フォームになる限り、Symfonyが提供するCollectionタイプを使用する必要があります。ここで

は一例です:もちろん

use Symfony\Component\Form\Extension\Core\Type\CollectionType; 
use Symfony\Component\Form\Extension\Core\Type\ImageType; 
// ... 

$formBuilder->add('images', CollectionType::class, array(
    // each entry in the array will be an "image" field 
    'entry_type' => ImageType::class, 
    // these options are passed to each "image" type 
    'entry_options' => array(
     'attr'  => array('class' => 'image-box') 
    ), 
)); 

独自のフォームタイプを作成したくない場合は、entry_typeにフィールドタイプに建ていずれかを渡すことができます。ここ

より詳細な情報:http://symfony.com/doc/2.2/cookbook/doctrine/file_uploads.html、それが古くなっているにもかかわらず、それはまだ

を助け

希望関連している:あなたはそこにそのための料理レシピがある、あなたのイメージの実体をすることが困難な場合はhttp://symfony.com/doc/current/reference/forms/types/collection.html

+0

ああ、コレクションタイプが私の必要としているものだと思ってくれてありがとう、私はこのチュートリアルでhttps://symfony.com/doc/current/form/form_collections.htmlが必要なものとほぼ同じことが分かりました。 TextboxTypeとして何かを仮定する| FileTypeも可能です。私はコンピュータからファイルを選択し、それに名前を付けることができます。そして、別のものを追加したい場合、別のTextboxTypeとFileTypeを追加する「行を追加」ボタンがあります –

+0

まさに。楽しむ! – Mawcel

関連する問題