如何在Symfony2中设置选择字段值?

时间:2015-11-28 23:56:32

标签: php forms symfony

最好的方法是设置一组键/值对(从MySQL获得)作为选择字段'选择'在控制器内? 我想类似于:

 $form = $this->createForm(new AddNews(), $news);
 $newsList = $this->getDoctrine()
             ->getRepository('BakaMainBundle:News')->getAllNews();

 $titlesList = ...($newsList); // some fuction that extract title=>id 
                               // array from news object collection

 $form->get('newsList')->setData($titlesList);

AddNews()表单如下所示:

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add(...)
            ->add(...)
            ->add('accept' , 'submit')
            ->add('newsList', 'choice', array
            (
                'mapped' => false,
                'required' => true
            ));
    }

2 个答案:

答案 0 :(得分:0)

也许类似下面(假设Symfony> = 2.7)。有关字段选项,请参阅docs

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add(...)
            ->add(...)
            ->add('accept' , 'submit')
            ->add('newsList', 'entity', array
            (
                'class' => ''BakaMainBundle:News'',
                'choice_label' => 'title',
                'mapped' => false,
                'required' => true
            ));
    }

答案 1 :(得分:0)

你可以得到你的新闻"直接从您的formType文件,使用您的存储库,如:

    private function getNews(){    
    $newsList = $this->getDoctrine()
                 ->getRepository('BakaMainBundle:News')->getAllNews();

     $titlesList = ...($newsList); // some fuction that extract title=>id 
                                   // array from news object collection
    }

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add(...)
            ->add(...)
            ->add('accept' , 'submit')
            ->add('newsList', 'choice', array
            (
                'mapped' => false,
                'required' => true,
                'choices' => $this->getNews()
            ));
    }