以下の両方のシナリオを処理する単一のフォーム タイプを作成することは可能ですか?
「通常の」ユーザー (ROLE_USER など) がフォームに入力してタスクを実行できるアプリケーションを開発しています。レコードが作成されると、彼はイベント テーブルにリンクされます。さらに、ROLE_ADMIN ユーザーは、ユーザーのリストからユーザーを選択して、代わりに (同じフォームに「ユーザー」フィールドを追加して) ユーザーをリンクできます。
現時点では、「eventType」と「eventAdminType」のコードが 98% 重複しています。トランスフォーマーとフォームイベントについて読んだことがありますが、それらを自分のニーズに適応させる方法が完全にはわかりません。
「eventType」のフォームコード:
$builder
->add(
'reservedSlots', 'choice', array(
'choices' => array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5'),
'required' => true,
)
)
「eventAdminType」のフォームコード:
$builder
->add('user')
->add(
'reservedSlots', 'choice', array(
'choices' => array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5'),
'required' => true,
)
)
エンティティ コード:
class EventUser
{
...
/**
* @ORM\OneToOne(targetEntity="User")
* @var type
*/
private $user;
...
// all the other fields
/**
*
* @ORM\Column(type="integer")
*/
private $reservedSlots
上記の単一のフォームタイプを作成するにはどうすればよいですか?