当'data'是实体时,如何预先选择单选按钮

时间:2014-02-24 09:54:04

标签: symfony entity

通常,表单会显示选择代码, 我有两个表有多对一的关系。

例如

MainTable

ID | name |job
1  | Mr.A |1
2  | Mr.D |1
3  | Mr.C |3

jobTable

ID | name    
1  | doctor
2  | engineer
3  | teacher

然后,我正在通过表格输入Maintable symfony使用选择框进行这种选择,但我使用这样的单选按钮。

$form = $this->createFormBuilder($mainTable)
->add('job','entity',array(
        'class' => 'AcmeTopBundle:jobTable','expanded' => true))

然后我想预先选择一个按钮。

我找到了提示。

How to pre-select a form radio item with Symfony 2?

它说要使用

'data'=> 1

但我的选择是jobTable实体。

我怎样才能把工作表实体放进去?

'data'=> ???

2 个答案:

答案 0 :(得分:1)

您必须将实体记录作为数据传递给自己。所以,从控制器:

$em = $this->getDoctrine()->getEntityManager();

// If you want to preselect record with ID #1
$preselectedData = $em->getReference('AcmeTopBundle:jobTable', 1);

$form = $this->createFormBuilder($mainTable)
             ->add(
                 'job','entity',array(
                    'class' => 'AcmeTopBundle:jobTable','expanded' => true,
                    'data' => $preselectedData
                 )
             )
             // ...
        ;

答案 1 :(得分:0)

更容易在entity/value object中设置默认值。表单组件处理它们并预先选择它。