Tutorials
Einige nützliche Hilfen und Code-Schnipsel, die ich immer wieder benötige und deshalb hier für alle sammle.
Zurück zur Übersicht
TYPO3: in_array ViewHelper
#Tutorials#TYPO3#PHP
Da in Fluid Standard-ViewHelper leider der in_array ViewHelper fehlt, habe ich mir diesen schnell selbst geschrieben. Hier ist der ViewHelper samt Beispiel zur Benutzung.
<?php
namespace Vendor\Ext\ViewHelpers;
class InArrayViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractConditionViewHelper {
public function initializeArguments() {
parent::initializeArguments();
$this->registerArgument('haystack', 'mixed', 'View helper haystack ', TRUE);
$this->registerArgument('needle', 'string', 'View helper needle', TRUE);
}
// php in_array viewhelper
public function render() {
$needle = $this->arguments['needle'];
$haystack = $this->arguments['haystack'];
if(!is_array($haystack)) {
return $this->renderElseChild();
}
if(in_array($needle, $haystack)) {
return $this->renderThenChild();
} else {
return $this->renderElseChild();
}
}
}
Benutzung geht dann beispielsweise so:
{namespace test=Vendor\Ext\ViewHelpers}
<test:inArray haystack="{week}" needle="mittwoch">
<f:then>
in array
</f:then>
<f:else>
not in array
</f:else>
</test:inArray>
// inline
{test:inArray(haystack:'{week}',needle:'mittwoch',then:'in array',else:'')}
Kommentare
namespace MyVendor\MyExtension\ViewHelpers;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractConditionViewHelper;
class InArrayViewHelper extends AbstractConditionViewHelper
{
public function initializeArguments()
{
parent::initializeArguments();
$this->registerArgument('haystack', 'mixed', 'View helper haystack. Needs to be an array of strings', true);
$this->registerArgument('needle', 'string', 'View helper needle. Needs to be a string!', true);
}
/**
* @param array $arguments
* @return bool
*/
protected static function evaluateCondition($arguments = null)
{
$needle = (string)$arguments['needle'];
$haystack = $arguments['haystack'];
if (!is_array($haystack)) {
return false;
}
if (in_array($needle, $haystack)) {
return true;
} else {
return false;
}
}
}
{test:inArray(haystack:'{week}',needle:'mittwoch',then:'in array',else:'')}
Hinterlasse einen Kommentar