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
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an