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