2016-07-18 4 views
2

Возможно ли в жидкости проверить, является ли тип переменной массивом? Я ищу что-то вроде этого.проверить, является ли переменная типа массива в жидкости

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

Или мне нужно создать свой собственный ViewHelper для этой цели?

+0

Что такое UseCase? Такая логика не принадлежит шаблону. – pgampe

+1

Мне нужно проверить, есть ли переменная типа массива, прежде чем я передам ее частичным. – Black

ответ

2

Я решил, написав мой собственный ViewHelper

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 
     } 
    } 
} 

Использование:

{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

Вы можете использовать 'return is_array ($ this-> arguments ['myvar']),', не нужно делать магию regex здесь. – Jost

+0

круто, thx для подсказки! – Black

4

Вы должны либо создать свой собственный ViewHelper, либо использовать existing one from EXT:vhs.

Он работает аналогично f:if ViewHelper:

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

Тогда я должен написать свой собственный viewhelper, я думаю, я получаю «ваша версия php выше, чем разрешено», если я пытаюсь установить расширение «VHS: Fluid Viewhelpers» – Black

+0

Какую версию TYPO3 вы используете? – Jost

+1

Какую версию TYPO3 вы используете? Если 6.2.x, вы не должны использовать PHP 7 (он официально совместим с PHP 5.3.7 до 5.6), а если 7.6.x, VHS должен быть доступен в версии 3.0.0, который поддерживает PHP 7.0.x. – Jost