0

「タスク」というテーブルがあり、「ユーザー」はタスクと多対多の関係にあります。

私が示しているページで:

<input type="checkbox" name="tasks[]" value="task.id"> TaskName

<input type="checkbox"> name="tasks[]" TaskName2

<input type="checkbox"> name="tasks[]" TaskName3

知りたい: サーバー側で、ユーザーが選択したチェックボックスの配列を取得するにはどうすればよいですか?

コレクションを取得したら、次を使用して追加できます

User->addTasks(tasks)

4

1 に答える 1

1

Symfony の組み込みフォーム機能を使用しているようには見えません。それを調べることを強くお勧めします...

Symfony フォームでは、「expanded」オプションと「multiple」オプションの両方をそれぞれ次のように設定することで、エンティティをチェックボックスとして表示できますtrue

// StackOverflow\BulbasaurBundle\Form\TrainerType.php

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;

class TrainerType extends AbstractType
{
    ...
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder
            ->add('name')
            ->add(
                'pokemon',
                'entity',
                array
                (
                    "class" => "BulbasaurBundle:Pokemon",
                    "expanded" => true,
                    "multiple" => true,
                    "property" => "description"
                )
            );
    }

    ...
}

このフォームがレンダリングされると、__toString()メソッドをチェックボックスのラベルとして使用して、各 Pokemon エンティティがチェックボックスとして表示されます。

Symfony フォームを使用することの追加のボーナスは、Symfony がどのボックスが自動的にチェックされるかを管理することです。フォームは、エンティティとリクエスト/ビューの間の仲介者として機能します。つまり、オブジェクトを変更する要求を行うと、コントローラーはそのオブジェクトの現在の状態に基づいてフォームを作成し、それをユーザーに提示します。逆に、ユーザーがそのデータを送信すると、コントローラーは要求情報をエンティティにバインドし、それを永続化できます。

Symfony2 フォームの詳細はこちら: http://symfony.com/doc/current/book/forms.html

于 2012-08-10T03:18:44.253 に答える