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