Symfony 2-Sonata Admin表单字段选择外部来源


Symfony 2 - Sonata Admin form field choices external source

上下文

  • 我需要将我的用户链接到公司
  • 这些公司存储在另一个数据库(mssql:())中
  • 我有一个存储过程,它提供了公司列表

我做了什么

  • 将dbal配置为能够调用存储过程
  • 扩展了SonataUser的实体,并为公司id添加了一个Integer字段
  • 带的扩展声纳用户管理configureFormFields()

    $formMapper
    #...
      ->add('company', 'choice', array('choices' => $companies))
    #...
    

$companies应该包含公司列表,但不确定这是正确的方法,而且我甚至不知道如何从这个类调用存储过程。。。

问题

  • 如何在SonataUser的表格中列出这些公司
  • 如何在列表中显示选定的公司名称

以下是我所做的:

  • 创建一个服务,注入连接以从
  • 创建自定义字段
  • 将其注册为服务,并在构造函数中注入第一个服务
  • 将选项提供给字段(进入自定义字段定义)

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
    #...
    

然后我就可以简单地从configureFormFields()使用它了:

->add('company', 'company')