npostnik.de

Fluid If-Condition und String-Vergleich

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>
Die mobile Version verlassen