2016-04-27 7 views
2

Der SilverStripe Fluent-Mod scheint alle Felder innerhalb einer DataExtension automatisch zu übersetzen. Um dies zu deaktivieren, musste ich folgendes verwenden: private static $translate = 'none';.SilverStripe Fluent automatisches Übersetzungsverhalten

Das ist seltsam, denn wenn es um geht, funktioniert es genau umgekehrt: Nichts wird automatisch übersetzt, nur die Felder, die Sie explizit übersetzen.

Ist es möglich, deaktivieren dieses automatische Übersetzungsverhalten des SS-Fluent mod? Es wäre auch interessant zu wissen, welche anderen Dinge Fluent automatisch übersetzt.

Antwort

2

Gerade baut auf Barrys Antwort in https://github.com/tractorcow/silverstripe-fluent/blob/master/docs/en/configuration.md näher bedeckt; Fluent übersetzt keine Erweiterungen, es übersetzt DataObjects und übersetzt automatisch Felder auf dem Datenobjekt, die den Fluent.data_include Regeln entsprechen. Stellen Sie es sich als Erweiterungen vor, die Felder in das Datenobjekt selbst hineinschieben, das fließend sieht, dass es dem erweiterten Objekt gehört, und nicht der Erweiterung selbst.

Das Problem, auf das Sie stoßen, ist das automatische Übersetzungsverhalten, wobei translate nicht definiert ist. Sie können Barrys Antwort folgen, um dies für einzelne Objekte zu lösen. Wenn Sie alle automatischen Feldübersetzungen global deaktivieren möchten, können Sie die Werte von Fluent.data_include in Fluent.data_exclude kopieren. Ein Feldtyp in dieser Liste wird nicht zur Lokalisierung einbezogen (auch wenn in Fluent.data_include).

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

Das heißt, wenn Sie ein Datenobjekt (oder eine Erweiterung) wie unten haben, wird es nicht automatisch übersetzt.

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

Im Code ...

In Silvers jede statischen Array kann im Code festgelegt werden, also ja das Hinzufügen dieser

Config::inst()->update('MyDataObject', 'translate',<SET ME HERE>); 

... dafür sorgen, arbeiten _confip.php einstellen der erforderliche Wert!

Wenn Sie dann die gleiche Sache in config.yml hinzuzufügen ...

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

... ist diese

+0

Sorry, meine Frage war dazu nicht klar. Ich möchte verhindern, dass der * Fluent * -Mod automatisch Felder in einer Klasse übersetzt, die 'DataExtension' erweitert. – Faloude

+0

Ich denke, das ist was ich geantwortet habe, wenn Sie 'MyDataObject' für 'AnyClassName' ändern, dann funktioniert das Alles in Silberstreifen. Siehe silverstripe verwendet dev/build, um all diese Informationen zu kompilieren (weshalb, wenn du es änderst, musst du dev bauen!), Also funktioniert der obige Code für statische Variablen in jeder Klasse ... bitte probiere es ok? – Barry

+0

Sie haben Recht, das funktioniert so, wie ich es erwartet habe! Aber ich versuche, die Wurzel des Problems zu finden: Wo in den Konfigurationsdateien von Fluent steht, dass Fluent DataExtensions automatisch übersetzen sollte? Wenn es keine Antwort darauf gibt, dann ist dein Setup der einzige Weg zu gehen und ich werde es als Antwort ankreuzen. Prost – Faloude