Zum Inhalt springen

Objektausgabe in Fluid

Erstellt am 10. Oktober 2011 · 4 Antworten · letzte Antwort am 11. Oktober 2011

Tags: Frage

eddy ·

Hallo Typo3-Gemeinde,

ich möchte ganz banal ein Objekt in Fluid ausgeben und erstelle dazu im Controller ein Objekt $products und weise es products zu:

$productRepository = t3lib_div::makeInstance('Tx_Inventory_Domain_Repository_ProductRepository');
$products = $productRepository->findAll();
$this->view->assign('products', $products);

Im Template versuche ich nun auf products zuzugreifen. Diese Variante funktioniert jedoch nicht:

{products.name}

Verwende ich jedoch ein for each, dann klappt das:

<f:for each="{products}" as="produktausgabe">
{produktausgabe.name}</f:for>

Meine Frage ist nun, warum ich nicht direkt über products zugreifen kann? Vielleicht kann mir jemand dies kurz erläutern.

Vielen Dank
Eddy

rlp_immigrant ·

Hi Eddy,

mit

$products = $productRepository->findAll();

fragst du alle Objekte in dem Repository ab. Folglich müssen die Objekte irgendwie gespeichert werden. Früher war es ein Array, jetzt ist es ein QueryResult Objekt welches du aber wie ein Array ansprechen kannst.

wenn du einfach nur

{products.name}

machst, woher soll extbase dann wissen welches Objekt du meinst?

Du kannst auch einfach mal

<f:debug>{products}</f:debug>

machen. Vielleicht wird es dann klarer.

Grüße
Alex

eddy ·

Hi Alex,

danke für die einleuchtende Antwort.

Merkwürdigerweise wird das <f:debug> jedoch nicht ausgeführt und es erscheint ein leerer Bildschirm. Da muss ich dann nochmal ran.

Eddy

sobi555 ·

Doch, ich glaube, dass der debug schon ausgeführt wird. ABER... bei mir liefert er so viele Daten, dass mein Browser abstürzt. (irgendwann zeigt er was an)

Deswegen meine Frage... wie verhält sich das mit der Performance, wenn ich "findAll" verwende?

LG - Simon

eddy ·

Habe es nochmals mit debug getestet. Der Browser ist eine Weile beschäftigt, bricht dann aber irgendwann ab und die Seite bleibt leer.

Beziehe ich mich jedoch auf ein spezielles product, also z.B.

<f:debug>{products.0}</f:debug>

dann wird ein korrektes debug dieses products erzeugt.

Eddy