Hallo Dieter,

sorry, dass ich jetzt erst antworte. Die Arbeit und so … ;-)

Die Variante 3 klingt mir im Nachhinein auch nach einer passablen Lösung. Habe 
es wie in einer Mail vorher erwähnt aber schon mit einem eigenen ViewHelper 
gelöst.

Deine Bedenken in punkto „Abstaubermentalität“ kann ich verstehen, hoffe aber, 
dass Du das nicht wirklich auf mich beziehst, denn ich denke schon, mich mit 
meiner Beteiligung, auch wenn sie meist nur sehr theoretisch ist, nicht zu 
einem „Abstauber“ zu degradieren. Insbesondere weil ich auch schon sehr darauf 
achte, meine Lösung mit der Allgemeinheit zu teilen (siehe: 
https://gist.github.com/arnekolja/211df6fd61ae2d121f1f 
<https://gist.github.com/arnekolja/211df6fd61ae2d121f1f> ). Auch habe ich einen 
Feature Request erstellt, um Lösungen für solche Probleme in der Community 
anzustoßen und beteilige mich generell in vielerlei Hinsicht, wenn auch meist 
nicht in der Tiefe.

Ich finde, das gehört zum Community-Leben einfach dazu. Und Open Source lebt 
davon, was ich gerne als aktives Mitglied auf so einigen Plattformen 
unterstütze. Aber ich kann auch Leute verstehen, die mindestens phasenweise 
mehr nehmen als zu geben. Ist halt situationsbedingt. Aber Höflichkeit und 
Bewusstsein für das was man tut, bzw. wie man sich verhält, sollte immer da 
sein.

Gruß

Arne


> Am 23.09.2015 um 21:50 schrieb Dr Dieter Porth <ty...@mobger.de>:
> 
> Am 22.9.2015 um 16:25 schrieb bernd wilke:
>> 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 
> Hallo Arne,
> 
> Ich persönlich favorisiere für kleine Templates immer Bernds Variante 1
> in abgewandelter Form nutzen
> <f:render partial="location/Type/default{dynWert}" /> 
> weil ich .html-Dateien nicht wirklich schön finden. Statt
> 12345.html-Partials müsste man dann natürlich default12345.html partials
> definieren.
> Um das Risiko der undefinierten Partials für bestehende UID-Zahlen
> besteht auch hier. Hier würde nur eine f:if-Bedingung helfen, die prüft,
> ob ein Partial existiert.
> Analog wie in Beispiel 3 von Bernd könntest du eine inline-Variante des
> f:render-Viewhelper in der f:if-Condition verwenden.
> 
> Wenn du Probleme bei der Erstellung der Inline-Codes hast, helfe ich dir
> gerne, wenn du deine Fehlerversuche präsentierst und deine Gedankengänge
> schilderst.
> Ich habe hier im Forum auch schon bei anderen das eine oder andere Mal
> eine sehr unhöfliche Abstaubermentalität erlebt, die ich mit meiner Zeit
> nicht unterstützen will.
> 
> 
> Anmerkung: Die Varianten 2 und 3 werden trotz funktionierenden
> TypoScript wohl schieflaufen, weil die per TypoScript definierten Pfade
> vermutlich nicht innerhalb des Partial-Verzeichnis zu finden sein
> werden. Auch schützen die beiden Varianten schützen nicht vor
> undefinierten Partials.
> 
> 
> Dieter
> 
> -- Dr. Dieter Porth - Mein kleines TYPO3-Labor: http://www.mobger.de/ 
> <http://www.mobger.de/>
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german@lists.typo3.org <mailto:TYPO3-german@lists.typo3.org>
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german 
> <http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german>
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an