Symfony2表单实体preferred_choices设置选定的值

时间:2015-08-03 13:23:54

标签: php symfony symfony-2.3

我很难尝试在我的表单上设置首选选项的选定值。

我有一个可以有多种税的课程日历:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('name')
        ->add('possibledigits')
        ->add('notes')
        ->add('autogenerateyear', 'checkbox', array('required' => false))
        ->add('calendartaxes', null, array(
              'required' => false,
              'multiple' => true, 
              'expanded' => true
            ))    
    ;
}

关系是多对多的:

    /**
 * @ORM\ManyToMany(targetEntity="CalendarTax", indexBy="name", inversedBy="calendarios")
 * @ORM\JoinTable(name="contable_schedule_taxes_relation")
 */ 
private $calendartaxes;    

我要做的是尝试获取表单的实体并尝试获取所选税。但我不知道这是否是正确的方法。 有更优雅的方式吗?

我正在使用symfony 2.3。

问候。

2 个答案:

答案 0 :(得分:1)

我假设您在Calendarios和CalendarTax之间建立了关系

所以在创建表单之前......执行

$calendarios = new CalendarIOS();
$calendartax = $this->getDoctrine()->getManager()->getRepository('NamBundle:CalendarTax')->find($calendar_tax_id);
$calendarios->addCalendarTax($calendartax);

现在当你将实体发送给formbuilder时......你将检查那个特别的calendartax ...... :)

答案 1 :(得分:0)

最后,我使用首选的preferred_choices。

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $calendario = $builder->getData();
    $taxesId = array();
    foreach($calendario->getCalendartaxes() as $tax){
      $taxesId[] = $tax;
    }
    $builder
        ->add('name')
        ->add('possibledigits')
        ->add('notes')
        ->add('autogenerateyear', 'checkbox', array('required' => false))
        ->add('calendartaxes', null, array(
              'required' => false,
              'multiple' => true, 
              'expanded' => true,
              'preferred_choices' => $taxesId,
            ))    
    ;
}

再制作一个查询并获取表单构建器的日历。 @Hakim给出的评论让我走上了正确的道路。

谢谢!