Search the FirstSpirit Knowledge Base
Nabend zusammen,
ich versuche gerade über die API an die Section einer FS_List heranzukommen. Das Beispiel in der API reicht da leider nicht aus, zudem steht da auch "This part of the API is preliminary and may change in future versions." im Interface "FormData".
Letztendlich möchte ich, wie es auch in der ContentAreaListValue möglich ist, an die Sectionliste zugreifen. Dort ist die API genau so, wie erwartet, jedoch nicht in der FS_List Komponente.
In FS_List Typ=Inline habe bisher folgendes:
List<String> varList = section.getData().getVariableNames();
for (String variable : varList) {
if (section.getData().get(variable).getEditor() instanceof FsListEditorValue) {
FsListEditorValue fsListEditorValue = (FsListEditorValue) section.getData().get(variable).getEditor();
FormDataList dataList = fsListEditorValue.get(language);
for (FormData formData : dataList) {
/*
* TODO!
*/
}
}
Jetzt weiß ich nicht, wie ich aus dem formData eine Section bekomme.
Die zweite Sache ist, wie bekomme ich den Typ heraus? Es interessieren mich an dieser Stelle nur die Inline FS_Lists.
Danke vorab!
Hallo,
mit welcher FS-Version arbeiten Sie?
zudem steht da auch "This part of the API is preliminary and may change in future versions." im Interface "FormData".
Dieser Disclaimer ist ab Version 4.2.452 entfernt. Ich denke, dass sich zu Ihrer Version (je nachdem welche Sie haben) nichts mehr an dem Interface geändert hat.
Jetzt weiß ich nicht, wie ich aus dem formData eine Section bekomme
Gar nicht, da hier die neue FormData-API vorliegt. Ist aber auch nicht erforderlich, denke ich.
Die zweite Sache ist, wie bekomme ich den Typ heraus?
So sollte es gehen.
if (section.getData().get(variable).getEditor() instanceof FsListEditorValue) {
FsListEditorValue fsListEditorValue = (FsListEditorValue) section.getData().get(variable).getEditor();
FormDataList dataList = fsListEditorValue.get(language);
for (FormData formData : dataList) {
for (final GomFormElement form: formData.getForm().forms()) {
final String innerVarName = form.name();
FormField field = formData.get(language, innerVarName);
if (field.getType().equals(FormDataList.class)) {
// found inner fs list
// todo
}
}
}
}
}
Levent Meric wrote:
Die zweite Sache ist, wie bekomme ich den Typ heraus? Es interessieren mich an dieser Stelle nur die Inline FS_Lists.
über. DataSource
bzw. DataSourceType
also sowas in der Art:
fsListEditorValue.getForm().getDataSource().getType() ==
DataSourceType.INLINE;
formData eine Section:
Doch, ich muss auf die Texte zugreifen können. Deswegen muss ich an dieser Stelle wissen, wie ich die Texte extrahieren kann.
Danke an dieser Stelle, ich werde es ausprobieren.
Trotzdem die Frage, wie ich an die Texte herankomme, die in der FS_List abgelegt sind.
Das ist auch möglich, allerdings über die neue FormData / FormField API
Wenn das Formular des inneren FS_LIST Eintrages z.B. eine CMS_INPUT_TEXT Komponente mit Namen "text" enthält so würde das so aussehen.
for (FormData formData : dataList) {
final FormField textField = formData.get(language, "text");
if (field.getType().equals(String.class)) {
final String textValue = (String) textField.get();
// todo:
}
}
API-Links:
Hallo!
Ich habs jetzt. Ich wollte auf die einzelnen EditorValues hinaus, so wie es in den alten Eingabekomponenten auch ist.
So gehts:
for (FormData formData : dataList) {
Iterable<GomFormElement> testing = formData.getForm().forms();
for (GomFormElement gomFormElement : testing) {
System.err.println("varName : " + gomFormElement.getName());
System.err.println("editorType: " + gomFormElement.getDefaultValue());
if (gomFormElement.getDefaultValue() instanceof TextEditorValue) {
//TODO!
}
}
}
Danke an dieser Stelle,
Levent Meric
Ich sehe gerade, dass unter dem getDefaultValue keine Werte sich befinden.
Gibt es keine Möglichkeit aus dem FormData irgendwie die z.B. TextValue-Eingabekomponenten zu bekommen?
Siehe meine Antwort weiter oben: Re: Zugriff auf FS_List Typ=Inline über API