Leider kann der Fluid-ViewHelper keine Strings vergleichen. Ich habe ein wenig recherchiert und Lösungen gefunden.
Die erste ist ein eigener View Helper, der in der Lage ist, zwei Objekte (Strings z.B.) zu vergleichen.
<?php class Tx_MyExt_ViewHelpers_CompareViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper { /** * Returns true if $a and $b are type-equal, false otherwise. * * @param mixed $a * @param mixed $b * @return boolean */ public function render($a, $b) { return $a === $b; } } ?>
Dann soll es laut dem Eintrag so funktionieren:
<f:if condition="{myext:compare(a: 'foo', b: 'bar')}"> <f:then>...</f:then> <f:else>...</f:else> </f:if>
Leider hat es bei mir nicht funktioniert.
Aber der Vorschlag zwei hat hingegen funktioniert. Es wird mit Fluid ein Alias für den zu vergleichenden String defininiert und dann verglichen:
<f:alias map="{foobar: 'myString'}"> <f:if condition="{object.property} == {foobar}"><!-- do something --></f:if> </f:alias>
Hallo Natalia,
oder als Array verpacken – dann kannst Du Dir den Alias sparen :
Patrick
cool! …etwas umständlich – aber funktioniert bestens 🙂
Danke für den Tip!!
Danke….. ich war schon dabei mir die Haare raus zureisen.
Finde die Array-Methode von Patrick Lobacher am schnellsten und einfachsten… habe mich innerlich stark dagegen gewehrt, einen eigenen Viewhelper dafür zu schreiben.
Sehr hilfreich. Danke Patrick
Natalias Variante #2 will bei mir leider nicht. Fluid springt immer auf die Condition um. Ich vergleiche allerdings nicht eine Objekteigenschaft, sondern einen selbst im Controller zugewiesenen String.
Aah! Habe versehentlich nur einen Alias-Tag definiert:
Aliasse werden aber nur ersetzt, wenn sie innerhalb des Tags auftreten: http://www.typo3lexikon.de/typo3-tutorials/extensions/fluid/fluid-variablen-und-arrays.html