Dies scheint mit den Methoden, die wir bisher besprochen haben, nicht möglich zu sein. Ich habe den OP-Code implementiert und festgestellt, dass die Tabelle des dekorierten Objekts (in diesem Fall "Order") nicht wie erwartet aktualisiert wurde.
Ich kann einen Grund dafür, warum dies nicht über eine DataExtension
implementiert wird, vorausgesetzt, dass Devs mit einigen Kern-Logik Schraube, die auf bestimmte Tabelle und Spalte Spezifikationen beruht Schraube.
Ich habe ein wenig graben und festgestellt, dass was OP will ist möglich, aber mit ein wenig Code. Betrachten Sie die folgende Seite: https://docs.silverstripe.org/en/3.3/reference/dataextension/#custom-database-generation schlägt vor, eine augmentDatabase()
Methode auf der benutzerdefinierten DataExtension
zu definieren.
Es scheint jedoch keine detaillierten Dokumente zu geben, was als nächstes zu tun ist. Stattdessen rät die obige Seite, die Kern-Versioned
-Erweiterung auszuchecken, die, nachdem ich mein gesamtes SS-Projekt bereift habe, die einzige DataExtension
Unterklasse ist, die ich finden konnte, die eine augmentDatabase()
Methode erklärte. Vorausgesetzt, dass Versioned
mit x3 Tabellen für jede Klasse behandelt werden muss, die es verziert (SiteTree
, SiteTree_Live
, SiteTree_versions
) dann ist seine Logik verpflichtet, ziemlich beteiligt zu sein. Ich vermute jedoch, dass für eine benutzerdefinierte Implementierung auf einem DataObject die Dinge ein wenig einfacher sein können. (Es sei denn, Sie versionieren auch DataObjects!).
Viel Glück :-)
Angenommen, Sie haben in der Konfiguration 'OrderExtension' auf' Order' angewendet, und das fehlende ')' am Ende ist nur ein Tippfehler im Beispiel? –
Haben Sie versucht, dev/build damit zu starten? Was ist passiert? Entweder beschwört SS bei dev/build, dass Sie versuchen, eine Spalte mit dem gleichen Namen hinzuzufügen, oder es wird die Spaltenkonfiguration des Feldes ändern. Vergessen Sie nicht, '_config/config.yml' oder' _config/extensions.yml' mit einem Verweis auf Ihren neuen Decorator zu aktualisieren, oder das Klassenmanifest von SS hat keine Kenntnis von Ihrer Klasse. – theruss
RobbieAverill - Ja, nur Tippfehler in meinem Beispiel. @theruss - Ich war sicher, dass ich meine Erweiterung in config.yml hatte und einen dev/build gemacht habe, aber es hat nichts getan. Auch von der SS keine Beschwerden. Ich werde es heute noch einmal testen. Danke euch beiden. –