2016-07-18 28 views
2

Ist es in Fluid möglich zu prüfen, ob der Typ einer Variablen ein Array ist? Ich suche nach so etwas.prüfen, ob Variable vom Typ Array in Fluid ist

<f:if condition='{myvar.Type == "Array"}'></f:if> 

Oder muss ich meinen eigenen ViewHelper für diesen Zweck erstellen?

+0

Was ist die usecase? Eine solche Logik gehört nicht in die Vorlage. – pgampe

+1

Ich muss überprüfen, ob eine Variable vom Typ Array ist, bevor ich sie an meine Partiellen übergeben. – Black

Antwort

2

Ich löste es meine eigenen View Helfer durch Schreiben

class TestViewHelper extends AbstractViewHelper 
{ 
    /** 
    * Arguments Initialization 
    */ 
    public function initializeArguments() 
    { 
     $this->registerArgument('myvar', 'string', 'test', TRUE); 
    } 

    /** 
    * @return integer test 
    */ 
    public function render() 
    { 

     $arg  = $this->arguments['myvar']; 
     $argType = gettype($arg); 
​ 
     if (preg_match("/array/i", "$argType")) { 
      return 1; //match 
     } else { 
      return 0; //No match 
     } 
    } 
} 

Verbrauch:

{namespace mynamespace=YOUR_EXTENSION_NAME\YOUR_VENDOR_NAME\ViewHelpers} 

<f:if condition="<mynamespace:isarray myvar='{_all}'/>==1"> 
    <f:then> 
     <strong>_all is an Array</strong><br> 
    </f:then> 
    <f:else> 
     <strong>_all is not an Array</strong><br> 
    </f:else> 
</f:if> 
+2

Sie könnten 'return is_array ($ this-> arguments ['myvar']);' verwenden, hier brauchen Sie keine Regex-Magie. – Jost

+0

cool, danke für den Hinweis! – Black

4

Sie müssen entweder Ihren eigenen ViewHelper erstellen oder die existing one from EXT:vhs verwenden.

Es funktioniert ähnlich wie die f:if View Helfer:

<v:condition.type.isArray value="{myvar}"> 
    <f:then> 
     ... 
    </f:then> 
    <f:else> 
     ... 
    </f:else> 
</v:condition.type.isArray> 
+0

Dann muss ich meinen eigenen Viewhelper schreiben Ich denke, ich bekomme "Ihre PHP-Version ist höher als erlaubt" wenn ich versuche, die Erweiterung "VHS: Fluid Viewhelpers" zu installieren – Black

+0

Welche Version von TYPO3 benutzen Sie? – Jost

+1

Welche Version von TYPO3 verwenden Sie? Wenn Sie 6.2.x verwenden, sollten Sie PHP 7 nicht verwenden (es ist offiziell kompatibel zu PHP 5.3.7 bis 5.6), und wenn 7.6.x, sollte VHS in Version 3.0.0 verfügbar sein, die PHP 7.0.x unterstützt. – Jost