Hallo Leute,
bei den ganzen Fluid-ViewHelpern vermisse ich einen FOR-ViewHelper.
Es gibt zwar einen, der so heißt, aber eigentlich ist das ja ein FOREACH-ViewHelper.
Die Parameter $each und $as sind zwingend vorgesehen.
Ich möchte aber gern einen ViewHelper, der in etwas so aufgerufen werden soll:
<my:customFor init="1" max="10" step="1" as="x" >
do_something_with{x}
</my:customFor>
Dabei soll x nur integer-Werte von (in diesem Beispiel) 1 bis 10 annehmen.
Ich möchte also nicht über ein Array iterieren. Weil ich aber zwingend eins haben soll, erzeuge ich eben ein Array = {1,2,3,4,...}
Ich denke, sowas könnte nützlich sein, und ich wundere mich echt, daß es sowas noch nicht gibt. 8-)
Ich hab dazu den Tx_Fluid_ViewHelpers_ForViewHelper genommen und davon folgendes abgeleitet:
class Tx_Myextension_ViewHelpers_CustomForViewHelper extends Tx_Fluid_ViewHelpers_ForViewHelper {
public function initializeArguments() {
parent::initializeArguments();
$this->registerArgument('init', 'integer', 0, FALSE, 0);
$this->registerArgument('max', 'integer', 0, FALSE, 0);
$this->registerArgument('step', 'integer', 0, FALSE, 1);
}
/**
* the render method
*
* @param string $as
* @param string $key
* @param boolean $reverse
* @param string $iteration
* @return string
*/
public function render($as, $key='', $reverse=FALSE, $iteration=NULL) {
$each = array();
for($i= intval($this->arguments['init']); $i<=intval($this->arguments['max']); $i+=intval($this->arguments['step'])){
$each[$i]=$i;
}
parent::render($each, $as, $key, $reverse, $iteration);
}
}
Soviel zu meinem Ansatz.
Nur funktioniert das so nicht.
Vielleicht sieht ja jemand, wo hier mein Denkfehler ist.
Ich hab schon einiges ausprobiert, komm aber nicht auf die Lösung. 😢