Symfony 2 - 更改FormType的实体字段值

时间:2014-07-23 13:04:11

标签: symfony symfony-forms

我在两个实体之间有两个OneToMany关系:Serie --->情节和剧集--->音乐如下:

    class Serie{
     ........
        /**
         * @ORM\OneToMany(targetEntity="Episode", mappedBy="serieId")
         * @ORM\OrderBy({"numeroE" = "ASC"})
         */
        private $episodes;
     ........
    }

    class Episode{
     ........
        /**
        * @var integer
        *
        * @ORM\ManyToOne(targetEntity="Serie", inversedBy="episodes")
        * @ORM\JoinColumn(name="serie_id", referencedColumnName="id")
        */
       private $serieId;

       /**
        * @ORM\OneToMany(targetEntity="Musique", mappedBy="episodeId")
        * @ORM\OrderBy({"min" = "ASC", "sec" = "ASC"})
        */
       private $musiques;
    }

    class Musique{
       ........

        /**
         * @ORM\ManyToOne(targetEntity="Episode", inversedBy="musiques")
         * @ORM\JoinColumn(name="episode_id", referencedColumnName="id")
         */
        private $episodeId;

       ........
    }  

在我的My \ ContentBundle \ Form \ Type \ MusiqueType中,它代表一个音乐实体表格,我有:

class MusiqueType extends AbstractType{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('episodeId', 'entity', array(
                 'class' => 'MyContentBundle:Episode' ,
            )
            ->add('serieId', 'entity', array(
                 'class' => 'MyContentBundle:Serie' ,
                 'mapped' => false
            )
        ;
    }
}

在我看来,我需要显示“剧集”和“剧集”。领域。但是,由于我的数据库中有大约一千集,我想在此字段中仅显示属于所选系列的剧集。

我打算使用一些ajax动作来做到这一点,但我想知道:有更简单的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

通过向表单添加自定义查询,您可以更加具体地生成表单:

use Doctrine\ORM\EntityRepository;
// ...

$builder->add('users', 'entity', array(
    'class' => 'AcmeHelloBundle:User',
    'query_builder' => function(EntityRepository $er) {
        return $er->createQueryBuilder('u')->orderBy('u.username', 'ASC');
    },
));

有关详细信息,请参阅SF2文档的entity Field Type页。