0

我试图弄清楚如何将数据库字段映射到 symnfony 表单选项。表单使用了 symfony 的朋友包,这是我的第一个 symfony 项目(更多的是 Laravel/CI 人)。

我需要根据数据库中的字段填充表单选择,问题是,我不知道这个项目中 Doctrine ORM 的实体管理器在哪里(它是一个非常无组织的文件结构),我无法弄清楚如何仅运行本机查询进行测试,直到我弄清楚为止。

该项目使用 Message Bundle 、 Form Models / Handlers / Types 等。我已经正确生成了表单,我只需要弄清楚将数据放在哪里以及如何去做。

到目前为止,我有这个:

<?php

namespace Application\FOS\MessageBundle\FormType;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use NeaceLukens\Bundle\Entity\File;
use Doctrine\ORM\EntityManager;
// use NeaceLukens\Bundle\Entity\FileCollection;
use FOS\MessageBundle\FormModel\NewThreadMessage;

class NewThreadMessageBulkFormType extends AbstractType
{

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
      // $choices = $this->getGroups();
        $builder
            ->add(
                'recipient', 'choice', array(
                'empty_value' => false,
                'multiple'=>true,
                'choices'=>array('1'=>'test1', '2'=>'test2', '3'=>'test3'),
                'attr'=>array('class'=>'form-control'), 
                )
            )
            ->add('subject', 'text', array('attr'=>array('class'=>'form-control')))
            ->add('body', 'textarea', array('attr'=>array('class'=>'form-control')));

    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'intention'  => 'message'
        ));
    }

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

    public function getGroups(){
        // build the mapping here? 
        /*
        $stmt = $this->getEntityManager()
                   ->getConnection()
                   ->prepare('SELECT t.id, t.name FROM fos_user_group');
      $r = $stmt->execute();
    return $r; */ 
    }
}

调用 getGroups 的函数出错了。我收到一条错误消息,指出以下内容:

在......第 63 行调用未定义的方法 Application\FOS\MessageBunde\FormType\NewThreadMessageBulkFormType::getEntityManager()

4

1 回答 1

0

当您希望使用数据库中的值填充选择字段时,您应该使用此处描述的“实体”字段类型 - http://symfony.com/doc/current/reference/forms/types/entity.html

于 2013-09-09T17:14:28.530 回答