0

だから、私は選択肢のある小さなフォームを構築しています。ただし、を適用しているかのように、これらのオプションのいくつかを事前に選択したいと思いますselected="selected"。ドキュメントでこれを行う方法を見つけることができませんでした。ヘルプ?:D

4

2 に答える 2

1

フォームのデフォルト値を設定するには、それらの値をフォームの基になるデータクラスに設定する必要があります。基になるデータクラスがエンティティであると仮定すると、値は構築時にそのエンティティでデフォルト設定できます。エンティティアノテーションを使用しておらず、生成されたエンティティクラスを変更したくない場合は、デフォルト値をエンティティクラスの新しいインスタンスに設定し、それをフォームのデータとして使用できます。

たとえば、ロールの配列とメソッドsetRoles(array $ roles)を持つUserエンティティの場合、次のようにUserエンティティのコンストラクターでロールをデフォルトにすることができます(わかりやすくするためにハードコードされた文字列を使用)。

public function __construct()
{
    $this->setRoles(array('ROLE_USER', 'ROLE_READER', 'ROLE_EDITOR');
}

または、フォームが次のように表示される直前に、コントローラーで役割をデフォルトにすることもできます(フォームクラスとハードコードされた文字列を含まない単純な例)。

$allRoles = array('ROLE_USER', 'ROLE_READER', 'ROLE_EDITOR', 'ROLE_ADMIN', 'ROLE_SUPER_ADMIN');

$user = new User();
$user->setRoles(array('ROLE_USER', 'ROLE_READER', 'ROLE_EDITOR');

$form = $this->createFormBuilder($user)
    ->add('username', 'text')
    ->add('roles', 'choice',  array('choices' => array_combine($allRoles, $allRoles),
                                    'multiple' => true)
    ->getForm();

return $this->render('AcmeTaskBundle:Default:new.html.twig', array(
    'form' => $form->createView(),
));
于 2012-07-20T08:31:25.243 に答える
0

思ったよりも単純になってしまいました:

$form['form[selectionMenu]']->select(1);
于 2012-07-26T18:18:03.163 に答える