---
title: "Fehler: An error occurred while trying to call Controller->showAction()"
url: "https://www.typo3.net/d/120537-fehler-an-error-occurred-while-trying-to-call-controller-showaction"
source: "typo3.net"
tags: ["Extensions","Extbase","Frage"]
created: "2015-07-16"
last_reply: "2015-08-27"
replies: 3
solved: false
page: 1
pages: 1
lang: "de"
---

# Fehler: An error occurred while trying to call Controller->showAction()

Extensions › Extbase · 3 Antworten · gestartet 2015-07-16

## Eröffnungsbeitrag

**maggo** · 2015-07-16 · [Beitrag #1](https://www.typo3.net/d/120537-fehler-an-error-occurred-while-trying-to-call-controller-showaction/1)

Hallo,

ich habe eine Extension mit dem ExtensionBuilder erstellt und noch ein wneig angepasst. Darin habe ich zwei Tabellen: "Hotels" und "Zimmer" - wobei jedes Hotel mehrere Zimmer mit Namen etc. haben kann (1-n).
Sobald ich allerdings in einem Hotel z.B. über das Backend (TCA) ein Zimmer hinzu füge, kann ich das Hotel mit der Standard-showAction nict anzeigen lassen und erhalte den Fehler "An error occurred while trying to call XYZ\XX\Controller\HotelController->showAction()"

Hier einmal ein paar Ausschnitte aus meinen Dateien:

Classes/Controller/HotelController.php

```php
/**
 * HotelController
 */
class HotelController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {

	/**
	 * hotelRepository
	 *
	 * @var \XYZ\XX\Domain\Repository\HotelRepository
	 * @inject
	 */
	protected $hotelRepository = NULL;

	/**
	 * action list
	 *
	 * @return void
	 */
	public function listAction() {
		$hotels = $this->hotelRepository->findAll();
		$this->view->assign('hotels', $hotels);
	}

	/**
	 * action show
	 *
	 * @param \XYZ\XX\Domain\Model\Hotel $hotel
	 * @return void
	 */
	public function showAction(\XYZ\XX\Domain\Model\Hotel $hotel) {
		$this->view->assign('hotel', $hotel);
	}

	/**
	 * action edit
	 *
	 * @param \XYZ\XX\Domain\Model\Hotel $hotel
	 * @ignorevalidation $hotel
	 * @return void
	 */
	public function editAction(\XYZ\XX\Domain\Model\Hotel $hotel) {
		$this->view->assign('hotel', $hotel);
	}

	/**
	 * action update
	 *
	 * @param \XYZ\XX\Domain\Model\Hotel $hotel
	 * @return void
	 */
	public function updateAction(\XYZ\XX\Domain\Model\Hotel $hotel) {
		$this->addFlashMessage('Die Einstellungen wurden aktualisiert.', '', \TYPO3\CMS\Core\Messaging\AbstractMessage::ERROR);
		$this->hotelRepository->update($hotel);
	}
}
```

ext_localconf.php

```php
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
	'XYZ.' . $_EXTKEY,
	'Hotelliste',
	array(
		'Hotel' => 'list,show',
		
	),
	// non-cacheable actions
	array(
		'Hotel' => 'list,show',
		
	)
);

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
	'XYZ.' . $_EXTKEY,
	'Hotelchange',
	array(
		'Hotel' => 'edit,update,show',
		
	),
	// non-cacheable actions
	array(
		'Hotel' => 'edit,update,show',
		
	)
);

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
	'XYZ.' . $_EXTKEY,
	'Zimmer',
	array(
		'Zimmer' => 'list, show, new, create, delete, edit, update',
		
	),
	// non-cacheable actions
	array(
		'Zimmer' => 'list, show, new, create, delete, edit, update',
		
	)
);
```

Classes/Domain/Model/Hotel.php

```php
/**
 * Hotel
 */
class Hotel extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {

	/**
	 * name
	 *
	 * @var string
	 * @validate NotEmpty
	 */
	protected $name = '';

	/**
	 * kategorie
	 *
	 * @var integer
	 */
	protected $kategorie = 0;

	/**
	 * latitude
	 *
	 * @var float
	 */
	protected $latitude = 0.0;

	/**
	 * longitude
	 *
	 * @var float
	 */
	protected $longitude = 0.0;

	/**
	 * kontaktdaten
	 *
	 * @var string
	 */
	protected $kontaktdaten = '';

	/**
	 * buchungslink
	 *
	 * @var string
	 */
	protected $buchungslink = '';

	/**
	 * buchungshotline
	 *
	 * @var string
	 */
	protected $buchungshotline = '';
        
        /**
	 * buchungsemail
	 *
	 * @var string
	 */
	protected $buchungsemail= '';

	/**
	 * teaser1
	 *
	 * @var string
	 */
	protected $teaser1 = '';

	/**
	 * teaser2
	 *
	 * @var string
	 */
	protected $teaser2 = '';

	/**
	 * teaser3
	 *
	 * @var string
	 */
	protected $teaser3 = '';

	/**
	 * teaser4
	 *
	 * @var string
	 */
	protected $teaser4 = '';

	/**
	 * beschreibung
	 *
	 * @var string
	 */
	protected $beschreibung = '';
        
        /**
	 * vermieten
	 *
	 * @var string
	 */
	protected $vermieten = '';

	/**
        * bilder
        *
        * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
        */
        protected $bilder;

	/**
	 * preis
	 *
	 * @var string
	 */
	protected $preis = '';
        
        /**
	 * author
	 *
	 * @var string
	 */
	protected $author = '';

	/**
	 * zimmer
	 *
	 * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\XYZ\XX\Domain\Model\Zimmer>
	 * @cascade remove
	 */
	protected $zimmer = NULL;

	/**
	 * __construct
	 */
	public function __construct() {
		$this->initStorageObjects();
	}

	/**
	 * Initializes all ObjectStorage properties
	 * Do not modify this method!
	 * It will be rewritten on each save in the extension builder
	 * You may modify the constructor of this class instead
	 *
	 * @return void
	 */
	protected function initStorageObjects() {
		$this->bilder = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
		$this->zimmer = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
	}

	/**
	 * Returns the name
	 *
	 * @return string $name
	 */
	public function getName() {
		return $this->name;
	}

	/**
	 * Sets the name
	 *
	 * @param string $name
	 * @return void
	 */
	public function setName($name) {
		$this->name = $name;
	}

	/**
	 * Returns the kategorie
	 *
	 * @return integer $kategorie
	 */
	public function getKategorie() {
		return $this->kategorie;
	}

	/**
	 * Sets the kategorie
	 *
	 * @param integer $kategorie
	 * @return void
	 */
	public function setKategorie($kategorie) {
		$this->kategorie = $kategorie;
	}

	/**
	 * Returns the latitude
	 *
	 * @return float $latitude
	 */
	public function getLatitude() {
		return $this->latitude;
	}

	/**
	 * Sets the latitude
	 *
	 * @param float $latitude
	 * @return void
	 */
	public function setLatitude($latitude) {
		$this->latitude = $latitude;
	}

	/**
	 * Returns the longitude
	 *
	 * @return float $longitude
	 */
	public function getLongitude() {
		return $this->longitude;
	}

	/**
	 * Sets the longitude
	 *
	 * @param float $longitude
	 * @return void
	 */
	public function setLongitude($longitude) {
		$this->longitude = $longitude;
	}

	/**
	 * Returns the kontaktdaten
	 *
	 * @return string $kontaktdaten
	 */
	public function getKontaktdaten() {
		return $this->kontaktdaten;
	}

	/**
	 * Sets the kontaktdaten
	 *
	 * @param string $kontaktdaten
	 * @return void
	 */
	public function setKontaktdaten($kontaktdaten) {
		$this->kontaktdaten = $kontaktdaten;
	}

	/**
	 * Returns the buchungslink
	 *
	 * @return string $buchungslink
	 */
	public function getBuchungslink() {
		return $this->buchungslink;
	}

	/**
	 * Sets the buchungslink
	 *
	 * @param string $buchungslink
	 * @return void
	 */
	public function setBuchungslink($buchungslink) {
		$this->buchungslink = $buchungslink;
	}

	/**
	 * Returns the buchungshotline
	 *
	 * @return string $buchungshotline
	 */
	public function getBuchungshotline() {
		return $this->buchungshotline;
	}

	/**
	 * Sets the buchungshotline
	 *
	 * @param string $buchungshotline
	 * @return void
	 */
	public function setBuchungshotline($buchungshotline) {
		$this->buchungshotline = $buchungshotline;
	}

	/**
	 * Returns the buchungsemail
	 *
	 * @return string $buchungsemail
	 */
	public function getBuchungsemail() {
		return $this->buchungsemail;
	}

	/**
	 * Sets the buchungsemail
	 *
	 * @param string $buchungsemail
	 * @return void
	 */
	public function setBuchungsemail($buchungsemail) {
		$this->buchungsemail = $buchungsemail;
	}

	/**
	 * Returns the teaser1
	 *
	 * @return string $teaser1
	 */
	public function getTeaser1() {
		return $this->teaser1;
	}

	/**
	 * Sets the teaser1
	 *
	 * @param string $teaser1
	 * @return void
	 */
	public function setTeaser1($teaser1) {
		$this->teaser1 = $teaser1;
	}

	/**
	 * Returns the teaser2
	 *
	 * @return string $teaser2
	 */
	public function getTeaser2() {
		return $this->teaser2;
	}

	/**
	 * Sets the teaser2
	 *
	 * @param string $teaser2
	 * @return void
	 */
	public function setTeaser2($teaser2) {
		$this->teaser2 = $teaser2;
	}

	/**
	 * Returns the teaser3
	 *
	 * @return string $teaser3
	 */
	public function getTeaser3() {
		return $this->teaser3;
	}

	/**
	 * Sets the teaser3
	 *
	 * @param string $teaser3
	 * @return void
	 */
	public function setTeaser3($teaser3) {
		$this->teaser3 = $teaser3;
	}

	/**
	 * Returns the teaser4
	 *
	 * @return string $teaser4
	 */
	public function getTeaser4() {
		return $this->teaser4;
	}

	/**
	 * Sets the teaser4
	 *
	 * @param string $teaser4
	 * @return void
	 */
	public function setTeaser4($teaser4) {
		$this->teaser4 = $teaser4;
	}

	/**
	 * Returns the beschreibung
	 *
	 * @return string $beschreibung
	 */
	public function getBeschreibung() {
		return $this->beschreibung;
	}

	/**
	 * Sets the beschreibung
	 *
	 * @param string $beschreibung
	 * @return void
	 */
	public function setBeschreibung($beschreibung) {
		$this->beschreibung = $beschreibung;
	}
        
        /**
	 * Returns the vermieten
	 *
	 * @return string $vermieten
	 */
	public function getVermieten() {
		return $this->vermieten;
	}

	/**
	 * Sets the vermieten
	 *
	 * @param string $vermieten
	 * @return void
	 */
	public function setVermieten($vermieten) {
		$this->vermieten = $vermieten;
	}
        

	/**
	 * Adds a FileReference
	 *
	 * @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $bilder
	 * @return void
	 */
	public function addBilder(\TYPO3\CMS\Extbase\Domain\Model\FileReference $bilder) {
		$this->bilder->attach($bilder);
	}

	/**
	 * Removes a FileReference
	 *
	 * @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $bilderToRemove The FileReference to be removed
	 * @return void
	 */
	public function removeBilder(\TYPO3\CMS\Extbase\Domain\Model\FileReference $bilderToRemove) {
		$this->bilder->detach($bilderToRemove);
	}

	/**
        * get the bilder
        *
        * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage
        */
        public function getBilder() {
                return $this->bilder;
        }
        
        /**
        * sets the bilder
        *
        * @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage $bilder
        *
        * @return void
        */
        public function setBilder($bilder) {
                $this->bilder = $bilder;
        }

	/**
	 * Returns the preis
	 *
	 * @return string $preis
	 */
	public function getPreis() {
		return $this->preis;
	}

	/**
	 * Sets the preis
	 *
	 * @param string $preis
	 * @return void
	 */
	public function setPreis($preis) {
		$this->preis = $preis;
	}
        
        /**
	 * Returns the author
	 *
	 * @return string $author
	 */
	public function getAuthor() {
		return $this->author;
	}

	/**
	 * Sets the author
	 *
	 * @param string $author
	 * @return void
	 */
	public function setAuthor($author) {
		$this->author = $author;
	}

	/**
	 * Adds a Zimmer
	 *
	 * @param \XYZ\XX\Domain\Model\Zimmer $zimmer
	 * @return void
	 */
	public function addZimmer(\XYZ\XX\Domain\Model\Zimmer $zimmer) {
		$this->zimmer->attach($zimmer);
	}

	/**
	 * Removes a Zimmer
	 *
	 * @param \XYZ\XX\Domain\Model\Zimmer $zimmerToRemove The Zimmer to be removed
	 * @return void
	 */
	public function removeZimmer(\XYZ\XX\Domain\Model\Zimmer $zimmerToRemove) {
		$this->zimmer->detach($zimmerToRemove);
	}

	/**
	 * Returns the zimmer
	 *
	 * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\XYZ\XX\Domain\Model\Zimmer> $zimmer
	 */
	public function getZimmer() {
		return $this->zimmer;
	}

	/**
	 * Sets the zimmer
	 *
	 * @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\XYZ\XX\Domain\Model\Zimmer> $zimmer
	 * @return void
	 */
	public function setZimmer(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $zimmer) {
		$this->zimmer = $zimmer;
	}

}
```

Den selben Fehler bekomme ich auch, wenn ich über das frontend ein Zimmer hinzufügen, ändern oder löschen möchte.

Habt ihr eine Idee? googlen und probieren hat mich bisher nicht voran gebracht.

## Antworten

### [#2](https://www.typo3.net/d/120537-fehler-an-error-occurred-while-trying-to-call-controller-showaction/2) · Schweriner · 2015-07-20

An error occured while trying to call blaAction... ein Fehler der diverse Ursachen hat. Bei mir kommt er meistens dann zustande, wenn irgendetwas mit meinem Model nicht mehr stimmt und es auch irgendwelchen Gründen nicht mehr valide ist.
Dirty aber eine Lösung bei diesem Problem könnte sein die Annotation @ignorevalidation $hotel vor die showAction zu setzen :)

### [#3](https://www.typo3.net/d/120537-fehler-an-error-occurred-while-trying-to-call-controller-showaction/3) · harald1972 · 2015-07-21

Hallo,

die deutsche Sprache ist echt toll. Man kann mit ihr beinahe alles ausdrücken.
Man tut sich aber keinen Gefallen, wenn man seine Bezeichner deutsch kodiert.
Einmal ist hier $zimmer ein Zimmer, andersmal ist (sind) $zimmer alle Zimmer des Hotels.
Das zum einen.

Zum anderen...
Hat es einen Grund, warum du configurePlugin auf drei Aufrufe verteilst?
Du sprichst damit drei verschiedene Plugins an.

### [#4](https://www.typo3.net/d/120537-fehler-an-error-occurred-while-trying-to-call-controller-showaction/4) · maggo · 2015-08-27

ach manchmal kann es so einfach sein... ich habe im model

> ```php
> 	/**
> 	 * name
> 	 *
> 	 * @var string
> 	 * @validate NotEmpty
> 	 */
> 	protected $name = '';
> ```

zu stehen. Ich sage ihm hier, dass der String nicht leer sein darf, gabe ihm aber als Standardwert einen leeren Wert ... $name = 'irgendwas'; behebt das Problem dann schon :D

---

Quelle: „Fehler: An error occurred while trying to call Controller->showAction()“, typo3.net, https://www.typo3.net/d/120537-fehler-an-error-occurred-while-trying-to-call-controller-showaction
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
