Questions & Answers

SOLVED
MichaelN
I'm new here

Auslesen der EntityFormData Editoren aus dem ContentStore

Jump to solution

Hallo,

ich mรถchte รผber die Editoren der Eingabekomponenten eines Datasets (content.getDataset(entity);) iterieren.

dazu hole ich mir das FormData

FormData formData = dataProvider.getFormData();

und dann den entsprechenden Editor:

formData.getForm().findEditor(editorName).getDefaultValue();

genau hier ist mein Problem.

Als Test lese ich die Datenbank-Schemata-Vorlagen des Mithras-Projekts aus.

Bei z.B. "Produkte" (product_categories) erhalte beim Aufruf von getDefaultValue() den Wert null und ich komme logischerweise nicht an die Informationen dieses Editors (z.B. fรผr 'cs_name' der TextEditorValue)

Bei z.B. "Produktvorschlรคge" (product_offers) erhalte ich den TextEditorValue mittels 'cs_name' und alles ist gut

0 Kudos
24 Replies

Die Umstellung ist genau unser Ziel.

In erster Instanz haben wir die Nutzung der deprecated-Methoden eliminiert. Ich kann aber nicht festellen, dass eine Methode (oder Klasse) der obigenCode-Zeilen auf deprecated stehen!?

0 Kudos

Das wird aktuell auch nicht gehen, weil es fรผr einige Zugriffe (noch) keine Alternativen gibt. Mit Vermischung meine ich, dass z. B. der TemplateStore รผber den UserService geholt wird, die inneren Daten (OptionModel) dann mit Hilfe eines Brokers. Wรผrde man sich den TemplateStore รผber einen Broker holen (Projekt-bezogen, wie oben, รผber den StoreAgent), wรคre auch der Zugriffsweg auf die OptionFactory klarer ersichtlich. Der SpecialistsBroker ersetzt benรถtigte API aus Connection, Project und UserService durch die modulare Bereitstellung von spezialisierten und funktional รผbersichtlichere Agenten. Hier ist ein einheitlicher Weg vermutlich sinnvoller, als Teile zu ersetzen.

Ich hoffe, dass jetzt ein funktionierender Weg fรผr Euer Problem an dieser Stelle gefunden wurde.

GruรŸ

Stefan

0 Kudos

Habe das jetzt in der Anwendung stringent umgestezt.

Allerdings habe ich noch ein kleines initiales Problem.

Beiden Code-Stellen liefern immer null. Was amche ich hier falsch?:

SpecialistsBroker broker = (SpecialistsBroker) connection.getBroker();

storeAgent = broker.requestSpecialist(StoreAgent.TYPE);

hier ist storeAgent null.

Und wenn ich das so machen,

SpecialistsBroker broker = ((BrokerAgent) connection.getBroker().requestSpecialist(BrokerAgent.TYPE)).getBrokerByProjectName(projectName);

Dann ist broker null.

0 Kudos

Moin,

Michael Nahberger schrieb:

Beiden Code-Stellen liefern immer null. Was amche ich hier falsch?:

SpecialistsBroker broker = (SpecialistsBroker) connection.getBroker();
storeAgent = broker.requestSpecialist(StoreAgent.TYPE);

Diese Stelle hatte ich oben schon versucht zu erklรคren. Die Connection hat nicht genรผgend Informationen, um einen StoreAgent zu liefern.

Und wenn ich das so machen,

SpecialistsBroker broker = ((BrokerAgent) connection.getBroker().requestSpecialist(BrokerAgent.TYPE)).getBrokerByProjectName(projectName);



Dann ist broker null.


Dann ist das angeforderte Projekt mit dem gegebenen Namen entweder nicht vorhanden, nicht aktiv oder es fehlen die Zugriffsrechte fรผr den Benutzer der Connection (siehe auch API-Dokumentation). Diese Stelle macht nichts anderes, als connection.getProjectByName(name); in Eurem Code, und stellt dann eine passende Broker-Instanz bereit.

GruรŸ, Stefan

0 Kudos

Kaum macht man es richtig Smiley Wink. Jetzt funktioniert es. Danke schรถn.

0 Kudos

Type a product name