SilverStripe Fluent自动翻译行为

时间:2016-04-27 10:34:29

标签: php silverstripe

SilverStripe Fluent mod似乎会自动翻译DataExtension内的所有字段。要禁用此功能,我必须使用:private static $translate = 'none';

这是奇怪的,因为当涉及到DataObjects时,它的工作方式相反:没有任何内容会自动翻译,只有您明确指出要翻译的字段。

是否可以禁用 SS-Fluent mod的自动翻译行为?了解Fluent自动翻译的其他内容也很有趣。

2 个答案:

答案 0 :(得分:3)

在代码中......

在silverstripe中,可以在代码中设置任何静态数组,所以是的,将它添加到_confip.php

MyDataObject:
  translate:
    - 'FieldOne'
    - 'SomeOtherField'

...将确保设置所需的值!

如果你想在config.yml中添加相同的东西,那么......

{{1}}

...... https://github.com/tractorcow/silverstripe-fluent/blob/master/docs/en/configuration.md

详细介绍了这一点

答案 1 :(得分:2)

以巴里的答案为基础; Fluent不会转换扩展,它会转换DataObjects,默认情况下会自动转换数据对象上与Fluent.data_include规则匹配的字段。可以把它想象为将字段推入数据对象本身的扩展,它可以看作是由扩展对象拥有的,而不是扩展本身。

您遇到的问题是自动翻译行为,其中未定义translate。您可以按照Barry的回答为单个对象解决此问题。

如果要全局禁用所有自动字段翻译,可以将值从Fluent.data_include复制到Fluent.data_exclude。此列表中的字段类型不会包含在本地化中(即使在Fluent.data_include中)。

---
Name: myfluentconfig
After: '#fluentconfig'
---
Fluent:
  data_exclude:
    - 'Text'
    - 'Varchar'
    - 'HTMLText'
    - 'HTMLVarchar'

这意味着如果您拥有如下所示的数据对象(或扩展程序),则不会自动翻译。

class MyObject extends DataObject {
    private static $db = [
        'Name' => 'Text'
    ];
}