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:奏鸣曲 userbundle + fos userbundle + mongodb => 错误“sonata.user.mongodb.user_manager”不存在