Zum Inhalt springen

fluid optionlabelfield mit mehreren Labels

Erstellt am 11. Februar 2015 · 8 Antworten · letzte Antwort am 23. Februar 2015

Tags: Fluid, Frage

HH ·

Hab's hinbekommen, ich bin mir nicht sicher ob's auch geschickter geht, hier trotzdem mal meine Lösung:
Ich hab mir in meinem Controller eine Klasse gebaut, die die zwei Eigenschaften (zb. Vorname und Nachname) zu einer Eigenschaft zusammenfasst. Diese Klasse übergebe ich dann dann das fluid Formular.
Das ganze sieht so aus.
Im Controller:

		$Kunden = $this->kundenRepository->findAll();
		foreach($Kunden AS $entry) {
			$kundenNamen = $entry->getVorname().", ".$entry->getNachname();
			$name = new \stdClass();
			$name->uid = $entry->getUid();
			$name->name-vn = $kundenNamen;
			$name2[] = $name;
		}
		$this->view->assign('name-fuer-fluid', $name2);

und im fluid template:

<femanager:form.select property="kunden" options="{name-fuer-fluid}" optionValueField="uid" optionLabelField="name-vn" sortByOptionLabel="TRUE" />

Ich hoffe ich hab mich jetzt nicht vertippt, ich habe die variablen und klassen umbenannt damit man es vielleicht besser nachvollziehen kann......

Unbekannter Benutzer · · Beste Antwort

Etwas umständlich, ja 😃 Einen etwas eleganteren Weg hast du in deinem Link ja selbst schon gepostet.
Du hättest dir einfach in deiner Klasse "Kunden" eine Getter-Funktion schreiben können, z.B. getFullName().
In dieser Funktion hättest du dann einfach

return ($this->getVorname().", ".$this->getNachname());

zurückgegeben. Dann hättest du dir über {kunde.fullName} den vollen Namen in Fluid ausgeben können

HH ·

Wie mache ich das wenn die Kundendaten aus ner externen Extension kommen?
Da kriege ich jetzt verständlicherweise einen "Call to undefined method"

muss ich dann möglicherweise das model der externen extension erweitern?
d.h. in der aktuellen extension ein Model erstellen das mir die externe Extension erweitert und das ganze noch im ext_typoscript_setup.txt angeben??!?

harald1972 ·

Wenn es das ist, daß du eine Methode einer anderen Extension aufrufen willst, kannst du das bei redirect / forward angeben.

$this->redirect($actionName, $controllerName = NULL, $extensionName = NULL, array $arguments = NULL, $pageUid = NULL, $delay = 0, $statusCode = 303)

$this->forward($actionName, $controllerName = NULL, $extensionName = NULL, array $arguments = NULL)
HH ·

Hallo Harald,
könntest du mir das noch etwas genauer erläutern?
Im Prinzip möchte ich nicht auf eine Methode/Action einer anderen Extension aufrufen sondern lediglich auf die Inhalte/Eigenschaften einer Klasse die mir über das einbinden eines Repository geliefert werden.

Wie oben beschrieben hab ich das ja mithilfe einer foreach Schleife schon hinbekommen, allerdings wohl etwas umständlich und der Ansatz von zoolohed finde ich eigentlich ganz interessant, funktioniert glaube ich allerdings nur innerhalb der eigenen Extension....

Danke!

Unbekannter Benutzer ·

Moin,

also das was du da vorhast, könntest du tatsächlich mit einer Erweiterung der KundenKlasse machen. Am einfachsten wäre es natürlich, die andere Extension entsprechend anzupassen und um die Funktion zu ergänzen.

Ansonsten kannst du es quasi auch so machen, wie du es bisher gemacht hast ( kundenrepo->findAll und dann drüber iterieren und das Array um dein Attribut erweitern, wie du es brauchst, das ist allerdings nicht sooo sauber 😉 )