我试图弄清楚如何将数据库字段映射到 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()