---
title: "Objektattribute leer in CustomViewHelper"
url: "https://www.typo3.net/d/108693-objektattribute-leer-in-customviewhelper"
source: "typo3.net"
tags: ["Extensions","Extbase","Frage"]
created: "2011-12-19"
last_reply: "2011-12-19"
replies: 2
solved: false
page: 1
pages: 1
lang: "de"
---

# Objektattribute leer in CustomViewHelper

Extensions › Extbase · 2 Antworten · gestartet 2011-12-19

## Eröffnungsbeitrag

**marceo** · 2011-12-19 · [Beitrag #1](https://www.typo3.net/d/108693-objektattribute-leer-in-customviewhelper/1)

Hi,

ich baue gerade eine Event Extension.
Hier koennen pro Datum mehrere Events auftreten.

Zuerst hole ich mir aus dem Repository alle Events und alle verguegbaren Daten.

```php
public function listAction() {
	$allEvents = $this->MyRepository->findAllEvents();
	$dates = $this->MyRepository->findAllDates();
	$this->view->assign('dates', $dates);
	$this->view->assign('allEvents', $allEvents);
}
```

In der List.html rufe ich einen eigenen Viewhelper auf, der mir die Events pro Tag/Location zurueckgibt

```html
<helper:listevents daten="{dates}" events="{allEvents}"/>
```

```php
/** 
 * @param array $daten Current Event Date
 * @param array $events The Upcoming Events
 *
 * @return string the HTML Tag of the Events 
 */
public function render($daten = array(), $events = array()) {
```

Im ListViewHelper gehe ich in einer foreach-Schleife alle Daten durch und suche mir zu jedem Datum die passenden Events. D.h. also ich habe 2 foreach-Schleifen. Eine aussere fuer das Datum, eine innere fuer die Events.

Nur sagt er mir, dass die Eventattribute leer sind.

Wenn ich jedoch direkt nach Aufruf der render()-Methode das EventArray durchlaufe, gibt er mir alle Attribute aus. Und dann zeigt er mir auch alle Attribute im Frontend/auf der Webseite korrekt in der Liste an.
Mache ich diesen Durchlauf wieder raus, zeigt er in der Liste auch nichts an.

D.h. also, wenn ich auf Events zugreife nach Aufruf der render() Methode, zeigt er alles korrekt an. Mache ich dies nicht, werden auch keine Events im Frontend angezeigt, da die Attribute dann leer sind.

Hat da jemand ne Idee an was das liegen koennte?

## Antworten

### [#2](https://www.typo3.net/d/108693-objektattribute-leer-in-customviewhelper/2) · BFSven · 2011-12-19

Hi,

ich vermute mal, dass es innerhalb deiner render()-Methode liegt, aber dazu müsstest Du uns schon mehr von der Methode verraten.

Lass mich trotzdem die Anmerkung machen, dass mindestens eine der foreach-Schleifen ins Template gehören. Irgendwas wirst Du mit den Events ja machen und sicher auch ausgeben und ich fürchte da wird Ausgabe und Logik vermischt (auch wenn's ein ViewHelper ist). Wenn Du Deine render-Methode preisgibst, können wir Dir helfen, auch dieses Manko zu beseitigen ;)

Gruß, Sven

### [#3](https://www.typo3.net/d/108693-objektattribute-leer-in-customviewhelper/3) · marceo · 2011-12-19

Hi,

hab jetzt mal auf 3 ViewHelper ausgelagert. Hat sich aber nichts geändert.

Controller:

```php
/**
 * action list
 *
 * @return void
 */
public function listAction() {
	$allEvents = $this->airportEventsRepository->findAllEvents();
	$dates = $this->airportEventsRepository->findAllDates();
	$this->view->assign('dates', $dates);
	$this->view->assign('allEvents', $allEvents);
}
```

List.html:

```html
<f:layout name="Default" />
{namespace helper=Tx_NhEvents_ViewHelpers}

<f:section name="main">

<div class="event-list">
	<ul id="holder-list">
		<f:for each="{dates}" as="datum">
			<li>
				<div class="event-teaser-date">
					<div class="event-date-list">
						<helper:listdate datum="{datum}"/>
					</div>
					<div class="event-img-list">
						<helper:listimage datum="{datum}" events="{allEvents}"/>
					</div>
				</div>
				
				<div class="event-teaser-txt">
					<helper:listtext datum="{datum}" events="{allEvents}"/>
				</div>
			</li>
		</f:for>
	</ul>
</div>

</f:section>
```

ListimageViewHelper:

```php
class Tx_NhEvents_ViewHelpers_ListimageViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper {

/** 
 * @param mixed $daten Current Event Date
 * @param mixed $events The Upcoming Events
 *
 * @return string the HTML Tag of the Events 
 */
public function render($datum, $events) {
     $content = '';
     foreach ($events as $event) {
	if (date_format($event->getDatum(), 'd.m.') == date_format($datum->getDatum(), 'd.m.') && $event->getLocation() == 0) {
   $content .= '<img src="uploads/tx_nhevents/'.$event->getThumbnail().'" alt="event" height="95" width="120" />';
}
}
return $content;
}
}
```

ListtextiewHelper:

```php
class Tx_NhEvents_ViewHelpers_ListtextViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper {

	/** 
      * @param mixed $datum Current Event Date
	  * @param mixed $events The Upcoming Events
	  *
	  * @return string the HTML Tag of the products 
	  */
	public function render($datum, $events) {

		$this->cObj = t3lib_div::makeInstance('tslib_cObj');
		$location = array('T1', 'T2', 'SP');
		
		$content = '';
		
		$title = array();
		$currentEvents = array();
		
		foreach ($events as $event) {
			if (date_format($event->getDatum(), 'd.m.') == date_format($datum->getDatum(), 'd.m.')) {
				switch ($event->getLocation()) {
					case 0:
						$title[0] = $event->getTitle();
						$currentEvents[0] = $event;
						break;
					case 1:
						$title[1] = $event->getTitle();
						$currentEvents[1] = $event;
						break;
					case 2:
						$title[2] = $event->getTitle();
						$currentEvents[2] = $event;
						break;
				}
			}
		}
		
		for ($i = 0; $i < 3; $i ++) {
			$currentEvent = $currentEvents[$i];
			if ($i == 0) {
				$bez = '<p class="loc-first">'.$location[$i].': '.$title[$i] .'</p>';
				$params = array(
								'parameter' => 35,
								'additionalParams' => '&tx_nhevents_eventdetails[airportEvents]='.$currentEvent->getUid().'&tx_nhevents_eventdetails[action]=show&tx_nhevents_eventdetails[controller]=AirportEvents',
								 'useCacheHash' => 1
				);
				$content .= $this->cObj->typolink($bez,$params);

			} 
			else if ($i == 2){
				$bez = '<p class="loc-last">'.$location[$i].': '.$title[$i] .'</p>';
				$params = array(
								'parameter' => 35,
								'additionalParams' => '&tx_nhevents_eventdetails[airportEvents]='.$currentEvent->getUid().'&tx_nhevents_eventdetails[action]=show&tx_nhevents_eventdetails[controller]=AirportEvents',
								 'useCacheHash' => 1
				);
				$content .= $this->cObj->typolink($bez,$params);
			}
			
			
			
			else {
				$bez = '<p>'.$location[$i].': '.$title[$i] .'</p>';
				$params = array(
								'parameter' => 35,
								'additionalParams' => '&tx_nhevents_eventdetails[airportEvents]='.$currentEvent->getUid().'&tx_nhevents_eventdetails[action]=show&tx_nhevents_eventdetails[controller]=AirportEvents',
								 'useCacheHash' => 1
				);
				$content .= $this->cObj->typolink($bez,$params);
			}
		}
		
		return $content;
	}
}
```

Er hängt schon im ListimageViewHelper. Uid, Datum kann ich mir ausgeben lassen, aber Attribute wie Thumbnail, Titel, Eventtext sind alle NULL.

Es gibt im Moment insgesamt 6 Testevents, bei denen alle Attribute ausgefüllt sind.

Das komische ist auch, dass er mir 2 Events von 6 in der Liste anzeigt im ListtextViewHelper.

Irgendwie werd ich da nicht schlau drauf.
Evtl. liegt es an den Datensätzen?!

---

Quelle: „Objektattribute leer in CustomViewHelper“, typo3.net, https://www.typo3.net/d/108693-objektattribute-leer-in-customviewhelper
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
