Symfony3:表单:用相关的模型条目填充选择


Symfony3: form: populate select with related model entries

我有两个模型,主题用户。两者通过多对一关系(主题仅由一个用户定义)相关联,例如:

class User
{
    private $idUser;
    private $username;
}

class Topic
{
    private $idTopic;
    private $topicName;
    private $idUser;
}

主要关注点:我想(使用symfony-forms)为主题模型创建一个创建表单。该表格将包含:

  1. 主题名称输入
  2. 用户选择 (由数据库中的现有用户填充的列表。当然,显示的值将是用户名)。

我创建了一个 TopicType 类,该类将构建主题创建表单:

class TopicType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->
            ->add('topicName')
            ->add(/* 'idUser', 'choice',  'THE USER LIST ???*/)
    }
    public function configureOptions(FormBuilderInterface $builder, array $options)
    {
        $resolver->setDefaults(array(
            'data_class' => 'AppBundle'Entity'Topic'
    ));
    }
}
  • 考虑到我无权访问 TopicType 上下文中的实体管理器,如何检索用户列表并填充选项?
  • 我可以在
  • 调用方法时将控制器中的$users数组作为参数传递createForm吗?如果是这样,如何?
  • 如果您了解我要做什么,有没有更好/更简单的方法来完成它?我错过了什么吗?

我知道这个问题可能看起来很相似,但我在相关主题上找到的所有解决方案都在 Symfony3 中被不推荐使用

任何帮助将不胜感激。祝大家有美好的一天。

你应该尝试这样的事情(你必须调整代码):

  ->add('User', EntityType::class, array(
    'class'    => 'xxxBundle'Entity'User',
    'choice_label' => 'username',
    'required' => true,
    'multiple' => false,
  ))

不要忘记:

use Symfony'Bridge'Doctrine'Form'Type'EntityType;

更多信息在这里 : http://symfony.com/doc/current/reference/forms/types/entity.html