Zum Inhalt springen

<f:for-ViewHelper ohne Ausgabe der Objekte aus ObjectStorage

Erstellt am 5. März 2014 · 1 Antwort · letzte Antwort am 5. März 2014

Tags: Fluid, ViewHelper, Frage

flashsilver ·

Hallo,

um besser in das Thema extbase/fluid zu kommen, schreibe ich eine kleine Anwendung, bei der es um Autorennen geht. Um es zu vereinfachen habe ich ein Objekt Saison (Aggregate Root), das vereinfacht gesagt aus 3 Relationen besteht: Rennen (1:n), Teams (1:n) und Fahrer (m:n).

Im Controller hole ich mir immer nur ein Saison-Objekt und übergebe es dem Fluid-Template von der Action.

$seasons = $this->seasonRepository->findAll();
if($this->request->hasArgument('season') && (int)$this->request->hasArgument('season') > 0) {			
	$seasonUid = intval($this->request->getArgument('season'));
	$season = $this->seasonRepository->findByUid($seasonUid);
	$piVars['season'] = $seasonUid;			
}else {
	$season = $seasons->getFirst();
	//@TODO: Get last season
}
$this->view->assign('season', $season);
<f:debug>{season}</f:debug>
<f:if condition="{season}">
	<h2>{season.year}</h2>
	<ul>
	<f:for each="{season.rennen}" as="{run}" iteration="i">
		<li>
			<f:debug>{run}</f:debug>
			
			{i.cycle}
			<f:format.date format="d.m.Y H:i">{run.date}</f:format.date>
			{run.title}
			{run.city}
			{run.status}
		</li>
	</f:for>
	</ul>

Ich erhalte innerhalb der For-Schleife folgendes Ergebnis:

<ul>
	<li>1</li>
	<li>2</li>
</ul>

Die Properties von {run} werden nicht ausgegeben, weil f:debug gibt null zurück.
Schaut man sich f:debug von {season} an, stellt man fest, dass sehr wohl die Run-Objekte mit Properties im ObjectStorage unter "Rennen" vorhanden sind.

Rufe ich die showAction eines Rennens auf, das ebenfalls eine for-Schleife über seine Positionen geht, dann erhalte wie gewünscht die Properties vom Positions-Objekts.

Was läuft unter TYPO3 4.7.17 in einem XAMPP unter WIN 7 falsch? Speicherfehler?
Wohl kaum, weil dieser Fehler erst jetzt auftritt und ich bereits zuvor 2 Extensionen geschrieben habe, die das Problem nicht haben.

flashsilver · · Beste Antwort

Ok, man sollte nicht Nachts programmieren, dann verliert man den Überblick.
Unter as="{run}" sollte nur as="run" stehen, als String