php - Symfony2 - 将服务注入(inject) SonataAdmin

标签 php symfony symfony-sonata dbal

我想从 SonataAdmin 类中获取数据库连接 configureFormFields()

这肯定行不通

protected function configureFormFields(FormMapper $formMapper)
{
    $mycnx = $this->get('doctrine.dbal.mycnx_connection');
//...

我需要它来扩展 Sonata/UserBundle/Admin/Entity/UserAdmin

如何从此类调用服务?


上下文:

我需要一个选择字段(公司),其选择来自其他连接(来自存储过程)。

最佳答案

你需要做的是:

  • 创建一个服务,注入(inject)连接以获取公司
  • 创建自定义字段
  • 将其注册为服务并在构造函数中注入(inject)第一个服务
  • 向字段提供选择

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

然后您就可以通过 configureFormFields() 简单地使用它:

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

关于php - Symfony2 - 将服务注入(inject) SonataAdmin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12057098/

相关文章:

php - 如果已经存在则插入数据/更新

php - 比较 PHP 和 MySql 中的日期和时间

php - 在我的 PHP MySQL Web 应用程序中存储用户国家和州/省/郊区/地区的最有效和最简单的方法是什么?

model-view-controller - 从 Symfony2 Controller 中删除 Doctrine 生命周期事件

php - Sonata Admin与文件上传的一对多关系(appendFormFieldElement)

sonata-admin - SonataAdminBundle 显示带有选项卡的 View

php - Elasticsearch查询的结果(PHP)

Symfony 2 中的 PHP 5.3 命名空间

php - 如何在 symfony/doctrine 上使用 SSL 连接到 MySQL

symfony - 使用相同的 login_check Sonata 用户包和 Sonata 管理包登录