[TYPO3-german] Fluid: Partial mit Fallback, wenn nicht vorhanden?
bernd wilke
t3ng at bernd-wilke.net
Tue Sep 22 16:25:17 CEST 2015
Am 22.09.15 um 15:22 schrieb Arne-Kolja Bachstein:
> Hallo allerseits,
>
> ich stehe vor dem Problem, dass ich von der Struktur meines Extbase-Plugins her so vorgehen möchte, dass ich ein Partial basierend auf einem dynamischen Wert einbinde. Also, zum Beispiel:
>
> <f:render partial="Location/Type/12345" />
>
> Dieser Typ basiert auf der ID des Typen in der Datenbank, kann aber dynamisch hinzugefügt werden. Ich möchte nun, dass für alle diejenigen Typen, für die ein Partial existiert, dieses eingebunden wird, aber wenn es nicht existiert soll kein Fehler kommen, sondern ein Default-Partial eingebunden werden.
>
> Ich suche also nach einer Lösung wie
>
> <f:if partialExists="Location/Type/12345“>
> <f:then><f:render partial="Location/Type/12345" /></f:then>
> <f:else><f:render partial="Location/Type/Default" /></f:else>
> </f:if>
>
> Oder, eigentlich schöner:
>
> <f:render partial="Location/Type/12345“ fallback="Location/Type/Default“ />
>
> Ist Euch ein funktionierender Weg bekannt, für den man nicht hässlich basteln muss? Oder anders: Wie würdet Ihr hier vorgehen?
wenn du es narrrensicher haben willst wirst du wohl kaum um einen
eigenen Viewhelper herum kommen, der überprüft ob ein bestimmtes Partial
existiert. ansonsten könnte ich mir Lösungen vorstellen, die aber auch
recht komplex sind:
1:
<f:render partial="location/Type{dynWert}" />
wenn {dynwWert} nicht definiert ist wird eben nur Type.html aufgerufen
ansonsten zb. Type123.html
Nachteil: bei neuen Werten geht es natürlich ins Nirwana
2.
überprüfung in Typoscript:
page.10.variables {
subPartial = TEXT
subPartial {
value = default
override.field = dyn_wert
override.stdWrap.if.isTrue.cObject = TEXT
override.stdWrap.if.isTrue.cObject {
field = dyn_wert
wrap = path_EXT:my_ext/Resources/Private/Templates/|.html
}
wrap = path_EXT:my_ext/Resources/Private/Templates/|.html
}
}
<f:render partial="{subPartial}" />
3.
das gleiche als TS-VH:
lib.subPartial = TEXT
lib.subPartial {
value = default
override.current = 1
override.stdWrap.if.isTrue.cObject = TEXT
override.stdWrap.if.isTrue.cObject {
current = 1
wrap = path_EXT:my_ext/Resources/Private/Templates/|.html
}
wrap = path_EXT:my_ext/Resources/Private/Templates/|.html
}
<f:render
partial="{dynWert->f:cObject(typoscritpObjectPath:'lib.subPartial')}" />
(das ganze ist jetzt nicht getestet, sollte aber so oder ähnlich
funktionieren)
bernd
--
http://www.pi-phi.de/cheatsheet.html
More information about the TYPO3-german
mailing list