Zum Inhalt springen

Template Marker ersetzten

Erstellt am 14. Dezember 2009 · 1 Antwort · letzte Antwort am 14. Dezember 2009

Tags: Frage

master celebrator ·

Hi Leute,

ich habe dieses Template und möchte die Marker ersetzten:

<!-- ###MAINLISTE### -->
<form action="index.php" method="post">
    <input type="hidden" name="send" value="###SENDVALUE###" /> 
    
        <!-- ###REPEAT### -->  
            <div>###NUMBER###</div>
        <!-- ###REPEAT### -->
    
    <input type="submit" value="" />
</form>
<!-- ###MAINLISTE### -->
$templateFile = $this->cObj->fileResource('EXT:fx_testextension/res/template.tmpl');
$template = $this->cObj->getSubpart($templateFile, '###MAINLISTE###'); 
$templateRepeat = $this->cObj->getSubpart($template, '###REPEAT###');

$content = $this->cObj->substituteMarker($template, '###SENDVALUE###', '1');    
		  
$repeat = '';
$marker = array();     

// For scheife die von 0-10 zählt ( warum kann man die hier nicht eintragen??)
	
	$marker['###NUMBER###'] =  $i;  
	$repeat .= $this->cObj->substituteMarkerArrayCached($templateRepeat, $marker);
//For ende

$content .= $this->cObj->substituteSubpart($template, '###REPEAT###', $repeat);
return $content;

Es kommt sowas bei raus, ist natürlich falsch mit den zwei Form Elementen:

<form action="index.php" method="post">
  <input type="hidden" name="send" value="1" />
  <div>###NUMBER###</div>
  <input type="submit" value="" />
</form>
<form action="index.php" method="post">
  <input type="hidden" name="send" value="###SENDVALUE###" />
  <div>0</div>
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
  <div>6</div>
  <div>7</div>
  <div>8</div>
  <div>9</div>
  <input type="submit" value="" />
</form>

Wie geht es richtig , ich kriege es einfach nicht hin.

timo_s ·

Hallo.

Du hast folgende Fehler gemacht, in Zeile 5 nimmst du das ganze Template und ersetzt nur den Marker ###SENDVALUE### und in Zeile 16 nimmst du abermals das ganze Template und ersetzt nun den Marker ###REPEAT###. So kommt es das du das <form>-Tag zweimal in deinem $content stehen hast.

Versuch mal folgendes:

$templateFile   = $this->cObj->fileResource('EXT:fx_testextension/res/template.tmpl');
$template       = $this->cObj->getSubpart($templateFile, '###MAINLISTE###'); 
$templateRepeat = $this->cObj->getSubpart($template, '###REPEAT###');
                  
  // For scheife die von 0-10 zählt ( warum kann man die hier nicht eintragen??)
$repeat = '';
for($i=0; $i<10; $i++) {
  $marker = array('###NUMBER###' =>  $i);
  $repeat.= $this->cObj->substituteMarkerArrayCached($templateRepeat, $marker);
}

$marks = array(
  '###SENDVALUE###' => '1',
  '###REPEAT###'    => $repeat;
);
$content = $this->cObj->substituteMarkerArrayCached($template, $marks);

return $content;

Ist nur so runter geschrieben und nicht getestet. Sorry.

Entscheident hier sind die Zeilen 12 - 16, denn dort nehme ich nur einmal das $template und übergebe der Methode ein Array ($marks) mit den Markern die ersetzt werden sollen.

Tipp: http://doxygen.frozenkiwi.com/typo3/html/ und suche mal nach 'substituteMarkerArrayCached'