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

时间:2012-08-21 09:27:27

标签: php symfony symfony-sonata symfony-2.1 sonata-admin

上下文

  • 我需要将用户与公司联系起来。
  • 这些公司存储在另一个db(mssql :()。
  • 我有一个存储过程,可以为我提供公司列表。

我做了什么

  • 配置dbal以便能够调用存储过程。
  • 扩展SonataUser的实体,并为公司ID添加了一个Integer字段。
  • 使用

    扩展SonataUser的管理员configureFormFields()
    $formMapper
    #...
      ->add('company', 'choice', array('choices' => $companies))
    #...
    

$companies应该包含公司列表,但不确定它是否正确,我甚至不知道如何从这个类中调用存储过程......

问题

  • 如何将这些公司列入SonataUser的表格?
  • 如何在列表中显示所选公司名称?

1 个答案:

答案 0 :(得分:2)

这是我做的:

  • 创建一项服务,获取连接injected以从
  • 获取公司
  • 创建custom field
  • 将其注册为服务,inject将其作为构造函数中的第一个服务
  • 为字段提供选项(进入自定义字段定义)

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

然后我就可以在configureFormFields()中使用它:

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