symfony表单构建器,跨越一对多到多对一

时间:2013-05-03 08:39:09

标签: symfony

我知道这是可能的,但我迷失在哪里开始。我的主要麻烦是弄清楚如何设置表单类。

实体

  

公式(id,code,name,formulaColors)

     

FormulaColor(公式,颜色,百分比)

     

颜色(id,code,name,formulaColors)

我想显示给定公式的多项选择核对表,该公式显示表格中的每种颜色。网格将有一列显示每种颜色的代码,名称和复选框。这些可能不是重要的细节。用户应该能够选中这些框并在提交和持久化时将其添加到Formula-> formulaColors中,最后将其添加到FormulaColor表中。此外,在构建表单时,应该已经检查已经属于公式的颜色。我认为如果没有百分比字段,FormulaColor表就是一个真正的连接表,这对我来说会更容易。

在控制器操作中,我可以访问需要为其选择颜色的公式。

我的表单类会是什么样子,至少粗略地说一下?

这是我的表单类到目前为止的样子

class ChooseColorsType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('formulaColors', 'entity', array(
                'class' => 'PrismPortalCommonBundle:Color',
                'property' => 'code',
                'expanded' => true,
                'multiple' => true,
            ));
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
                'data_class' => 'Prism\Portal\CommonBundle\Entity\Formula'
            ));
    }

    public function getName()
    {
        return 'prism_portal_adminbundle_choosecolorstype';
    }
}

但是,这给了我异常“错误:在/vagrant/src/Prism/Portal/CommonBundle/Entity/Formula.php第201行调用未定义的方法Prism \ Portal \ CommonBundle \ Entity \ Color :: getPercentage() “

我猜这与它不是常规的多对多关系有关。我不知道如何处理这个getPercentage()异常

更新

我还没有机会尝试,但明天我会。我认为这可能是我的问题的答案:http://www.prowebdev.us/2012/07/symfnoy2-many-to-many-relation-with.html

我没有考虑在我的Formula实体中添加一个mutator和accessor来直接处理Color。

0 个答案:

没有答案