Symfony3:form:用相关的模型条目填充select

时间:2016-02-24 13:04:54

标签: php symfony-forms symfony

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

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


class Topic
{
    private $idTopic;
    private $topicName;

    private $idUser;
}

MAIN CONCERN :我希望(使用symfony-forms)为主题模型创建一个创建表单。表格将包含:

  1. 主题名称 输入
  2. 用户 选择(由数据库中现有用户填充的列表。显示的值当然是用户名)。
  3. 我创建了一个 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

    非常感谢任何帮助。 祝大家度过美好的一天。

1 个答案:

答案 0 :(得分:0)

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

  ->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