Dies ist möglich. Angenommen, Ihr Modell Event hat eine Eigenschaft customId
. So generieren Sie Ihren Link wie folgt:
<f:link.action action="show" arguments="{event : event.customId}">
Der Link erzeugt eine querystring wie dieses:
?tx_myext[event]=9999
Die showaction von dem Extension Builder generiert erwartet, dass die UID des Ereignisses ist bestanden. Die PropertyMapper holt dann das Objekt automatisch und ordnet sich die Ansicht:
/**
* action show
*
* @param \Your\Extension\Domain\Model\Event $event
* @return void
*/
public function showAction(\Your\Extension\Domain\Model\Event $event) {
$this->view->assign('event', $event);
}
Aber in Ihrem Fall können Sie das Objekt durch UID nicht holen, weil Sie die CUSTOMID geben. So müssen Sie das Objekt holen Sie sich:
/**
* action show
*
* @param integer $event
* @return void
*/
public function showAction($event) {
$event = $this->eventRepository->findOneByCustomId($event);
$this->view->assign('event', $event);
}
Die Anmerkung @param integer $event
sagt TYPO3, dass der Parameter ist „nur“ eine ganze Zahl. Sie rufen dann die magische Methode findOneByCustomId
von Ihrem eventRepository. findOne
zeigt an, dass Sie genau ein Event
Objekt zurück (und nicht ein QueryResult
) möchten, während das ByCustomId
eine vorhandene Eigenschaft Ihres Event
Modells abfragt.
Meine Antwort dort ist eher für die Vermeidung von Controller und Aktion Teile in der URL, nur um den Typ des Parameters in Show-Aktion (außer Modell; s-Objekt) zu erklären @ Lorenz hat eine bessere Lösung. – biesior