我很难尝试在我的表单上设置首选选项的选定值。
我有一个可以有多种税的课程日历:
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。
问候。
答案 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给出的评论让我走上了正确的道路。
谢谢!