1 つの「ロール」エンティティを含む「ユーザー」エンティティがありました。
コントローラーコード:
/**
* @Route("/root/users/edit/{id}", requirements={"id" = "\d+"})
* @Method({"GET", "POST"})
*/
public function usersEditAction(Request $request, User $user)
{
$form = $this->createFormBuilder($user)
->add('username', 'text')
->add('role', 'entity', array( 'class' => 'Lan\CsmBundle\Entity\Role', 'property' => 'role'))
->add('id', 'hidden')
->getForm();
if ($request->isMethod('POST'))
{
$form->submit($request);
if ($form->isValid())
{
$em = $this->getDoctrine()->getManager();
$em->flush();
return $this->redirect($this->generateUrl('root_users'));
}
}
return $this->render('CsmBundle:Root:users_edit.html.twig', array(
'form' => $form->createView()
));
}
このコードは、1 つのロールを持つ 'User' オブジェクトを編集し、'Role' オブジェクトは HTML フォーム上で 'select' として表示されました。
今、私はデータベースのスキームを変更しました。「ユーザー」は多くの「ロール」を持つ可能性があります。フォーム上では、複数の属性を持つ「select」として表示できます。しかし、symfony2 でそれを行う本当の方法がわかりません。