Symfony2如何从实体的特定字段中获取数据以制作表单?

时间:2014-10-28 13:42:29

标签: forms symfony

我有一个实体对象,其大小字段(是一个数组)可用的大小不同。 (例如:s,m,xl)。但并非所有对象都具有相同的大小。我以这样的形式填写此字段=>

->add('size', 'choice', array('choices' => array('xs' => 'XS', 's' => 'S', 'm' => 'M', 'l' => 'L', 'xl' => 'XL'), 'multiple' => true, 'expanded' => true))

所以现在我想要另一种形式,用户可以选择一个可用的大小(对象)。 类型实体在我的情况下不起作用,因为我不寻找完整的实体。

我试试这个

$builder->add('size', 'choice', array(
'class' => 'MyWebshopBundle:Size',
'property' => 'name',
'expanded' => false,
));

但它没有用,所以如果你有一个想法,我真的很感激!

1 个答案:

答案 0 :(得分:1)

好的,我会通过根据相关实体的尺寸关系创建某种股票计数来推动这个metta数据。

然后在表单中执行类似

的查询构建器
    $builder->add('sizes', 'entity', array(
                 'class' => 'MYBUNDLE:Sizes',
                 'query_builder' => function(EntityRepository $er) use ($thisEntity) {
                                   return $er->createQueryBuilder('s')
                                       ->innerJoin('s.clothing', 'c')
                                       ->where('c = :entity')
                                       ->andWhere('s.stock > :stock')
                                       ->setParameters(['entity' => $thisEntity, 'stock' => 0])
                                       ->orderBy('s.size', 'ASC');
                 },
      ));

现在显然有一个缺少的联接,但你应该得到要点