Zum Inhalt springen

Vom Controller zum Model

Erstellt am 19. Mai 2011 · 2 Antworten · letzte Antwort am 20. Mai 2011

Tags: Frage

Typo3Cuckoo ·

Hi,

wie kann ich im Controller auf Variablen des Models zugreifen?

In der Extension sjr_offers steht in OffersController.php z.B. das hier:

/**
 * Renders a single offer
 *
 * @param Tx_SjrOffers_Domain_Model_Offer $offer The offer to be displayed
 * @return string The rendered HTML string
 * @dontvalidate $newContact
 */
public function showAction(Tx_SjrOffers_Domain_Model_Offer $offer, Tx_SjrOffers_Domain_Model_Person $newContact = NULL) {
  $organization = $offer->getOrganization();
  ...
}

Also dacht ich mir: ich bau das nach 😉

/**
 * List all objects
 * 
 * @param Tx_MyExtension_Domain_Model_Object $object
 * @return string The rendered HTML string
 */
public function listAction(Tx_MyExtension_Domain_Model_Object $object) {
  $date = $object->getDateStart();
  ...
}

Hat aber nicht so recht funktioniert, denn ich erhalte im Frontend folgende Fehlermeldung:

An error occurred while trying to call Tx_MyExtension_Controller_ObjectController->listAction(). Error: Required property 'object' does not exist.

Muss ich den Weg über das passende Repository gehen? Wie funktioniert das genau?

Danke für hilfreiche Antworten! 🙂

xandio ·

Offenbar wird der listAction beim Aufruf kein Objekt übergeben.

Etwas in dieser Art könntest Du im Controller verwenden:
$this->redirect('list', NULL, NULL, array('object' => $object));

Bzw. so etwas im Template:
<f:link.action action="list" arguments="{object : object}">List all objects</f:link.action>

Typo3Cuckoo ·

Die List-View ist meine Standardausgabe. D.h. ich hab das Plugin auf einer Seite eingefügt und wenn man die Seite aufruft erhält man die Listenansicht ohne irgend etwas anklicken zu müssen.

Aber ich denke ich hatte beim Erstellen des Threads noch nicht verstanden wie das mit dem Zugriff auf Daten des Models funktioniert (siehe Thread "Welche Funktion in welche Klasse" -> #105463).

Ich werde das noch mal über eine Funktion im Repository versuchen.

Danke soweit 🙂