Versions

  • Symfony 2.8

  • Sonata_core 2.3(无法将其升级为3,因为它会产生太多的附带损害)


Original Issue

基本上,在从symfony 2.7升级到2.8之后,其中一个sonata_core过滤器表单类型(sonata_type_equal)翻转其选项列表键/值 .

这是由于EqualForm类中的某些版本检测错误地在选择数组上执行 array_flip .

Line 62(评论从2.7开始,但似乎只有2.8)


所以,为了尝试解决这个问题,我想我会扩展原始表单类并解决问题 .

无论我做什么,我都无法让Sonata使用我的自定义类型 .

我看过各种尝试做同样事情的帖子(这里和其他地方),但没有一个建议有效 . 我想知道这是否是由于symfony 2.8更改导致这些事情无法正常工作?

我试过(没有成功):

  • 覆盖sonata.core.form.type.equal服务 . 这会产生错误:

字段类型“Sonata \ CoreBundle \ Form \ Type \ EqualType”未在服务容器中注册 .

sonata.core.form.type.equal:
            class: MyBundle\Form\Type\EqualType
            arguments: ['@translator']
            tags:
                - { name: form.type, alias: sonata_type_equal }
  • 尝试在config.yml中配置映射,如下所示:
sonata_core:
         form:
             mapping:
                 type:
                     sonata.core.form.type.equal:  MyBundle\Form\Type\EqualType

注意:我试图从DI类派生配置语法,所以这可能是不准确的 . (sonata.core文档似乎没有列出此区域中的任何配置说明)

  • 遵循these指令,使用bundle类中的 FormHelper 方法 . (这会被调用,但会立即被奏鸣曲DI类覆盖) .

  • 我甚至尝试使用作曲家 classmap 选项直接挂起自定义类,但它没有用 .

我是索纳塔项目包的新手,因此可能有一种解决原始问题的方法,而不必经历这些箍 .