繁体   English   中英

Symfony2表单实体preferred_choices设置所选值

[英]Symfony2 form entity preferred_choices set selected values

我在尝试在表单上设置首选值上的选定值时遇到一些麻烦。

我有一个班级日历,可以有多种税收:

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。

问候。

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

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

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

现在,当您将实体发送到formbuilder时...您将检查该垂直日历税... :)

最后,我使用选择的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的评论使我走上了正确的道路。

谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM