Symfony2 - 奏鸣曲 Datagrid 过滤器操作符转换为教义_orm_class 字段失败

Posted

技术标签:

【中文标题】Symfony2 - 奏鸣曲 Datagrid 过滤器操作符转换为教义_orm_class 字段失败【英文标题】:Symfony2 - Sonata Datagrid filter operators translation fails for doctrine_orm_class field 【发布时间】:2015-01-27 09:50:57 【问题描述】:

在我的 Symfony 项目 (2.5.7) 中,我使用 Sonata Admin Bundle 2.3。在 Admin 类中,我按如下方式指定了我的 DataGridForm:

protected function configureDatagridFilters(DatagridMapper $datagrid)    
    
$datagrid    
->add('name')    
->add('created_by_user');    
    

其中name 是文本,created_by_user 是与用户类的一对多关系。 结果,我有漂亮的过滤器表单,但created_by_user 字段的运算符,即 label_type_equals 和 label_type_not_equals,没有被翻译。 其他字段提供翻译:name: label_type_contains, label_type_not_contains, label_type_equals,很好。

在我的 app/config/config.yml 我设置:

framework:    
   translator:  fallback: "pl"     

翻译由 SonataAdminBundle 在位于 vendor/sonata-project/admin-bundle/Resources/translations 的 SonataAdminBundle.pl.xliff 中提供。

翻译任何其他标签。只有和doctrine_orm_class类型相关的不是。

请给我一些想法来解决这个问题。 谢谢。

【问题讨论】:

【参考方案1】:

当我升级软件包时,出现了丢失的翻译。我升级到 SonataAdminBundle 2.3.3,但我不太确定这是解决方案。尽管如此,我无法重复这个问题。

【讨论】:

【参考方案2】:

SonataAdminBundle 的翻译文件用于“内部全局”消息。

您可以将翻译添加到默认文件中,该文件应位于 Resources/translations/messages.pl.yml 文件中以添加翻译。

但推荐的方法是为一个包甚至一个管理文件创建一个单独的文件: https://sonata-project.org/bundles/admin/2-3/doc/reference/getting_started.html#step-3-create-an-admin-service

使用 TranslationDomain 您可以添加一个全局文件,例如“YourBundle.pl.yml”或“MyAdmin.pl.yml”:

# Acme/DemoBundle/Resources/config/admin.yml
services:
    sonata.admin.post:
        class: Acme\DemoBundle\Admin\PostAdmin
        tags:
            -  name: sonata.admin, manager_type: orm, group: "Content", label: "Post" 
        arguments:
            - ~
            - Acme\DemoBundle\Entity\Post
            - ~
        calls:
            - [ setTranslationDomain, [AcmeDemoBundle]]

【讨论】:

我当然做了这些基本步骤。正如我在奏鸣曲以波兰语提供这些标签之前所写的那样。

以上是关于Symfony2 - 奏鸣曲 Datagrid 过滤器操作符转换为教义_orm_class 字段失败的主要内容,如果未能解决你的问题,请参考以下文章

symfony2 多对多奏鸣曲 admin model_list

Symfony2,奏鸣曲:摆脱 UserBundle 中不必要的字段

Symfony2:奏鸣曲实体中的自定义标识符

上传图片时如何在 symfony2 奏鸣曲媒体中设置最大上传大小

symfony2:奏鸣曲 userbundle + fos userbundle + mongodb => 错误“sonata.user.mongodb.user_manager”不存在

Symfony2 - 扩展或替换 SonataUserBundle 注册表单