Zum Inhalt springen

Verständnisprobleme Forms (Extbase, Fluid)

Erstellt am 5. August 2013 · 1 Antwort · letzte Antwort am 6. August 2013

Tags: TYPO3 6.x, Frage

vitafit ·

Hallo Zusammen,

ich habe leider ein paar Verständnisprobleme was die Handhabung von Forms betrifft. Ich habe mittels des ViewHelpers f:form ein Form in meinem Default-View erstellt:
<f:form class="footer_form_field" action="show" name="newRegistierung" object="{newRegistierung}">
// -> Hier zwischen befinden sich noch etliche Input-Felder...
</f:form>

Wie übergebe ich die eingegebenen Formular-Daten nun an ein anderes View bzw. an meinen Controller, welche es an ein anderes View übergibt? Rein technische habe ich verstanden, dass alles in einem großen Object vermutlich via Post übergeben wird.

Ich hab bereits mein Glück mit diversen arguments versucht. Die Action die ich versuche aus dem Controller aufzurufen, sieht wie folgt aus:
public function showAction(\XBM\Registierung\Domain\Model\Registierung $registierung) {
$this->view->assign('registierung', $registierung);
}

Vermutlich ganz einfach, ich komme nur mangels Erfahrung nicht ganz dahinter... achja, der Fehler den ich erhalte:
Required argument "registierung" is not set.

Ist eigentlich eindeutig, nach ein wenig Google wird auch schnell klar, dass es eben genau das sein muss, was dort steht. Wo liegt also mein (Denk)fehler? Ist die Benennung der Objektinstanz in irgendeiner Form wichtig?

Helft mir bitte mal auf die Sprünge!

Vielen Dank, Gruß vitafit

sunixzs ·

Huhu,

die Fehlermeldung resultiert daraus, dass showAction einen Parameter erwartet, der aber nicht übermittelt wird.

Extbase würde automatisch den Parameter setzen, wenn im aufrufenden URL ein Model mit uid definiert wäre. In deiner Extension könnte der wohl so heißen: tx_registierung_pi1[registierung]=666.

Eigentlich willst du ja etwas anderes: nämlich die Werte aus deinem Formular in einer Action verarbeiten. Wenn du mit fluid deine Eingabefelder definierst, bekommen diese als name-Attribut automatisch den richtigen Wert für dein Plugin - z.B. <f:form.textfield name="myField" /> wird zu <input type="text" name="tx_registierung_pi1[myField]" />. Sendet das Formular nun an deine showAction, stehen die Werte als Argumente zur Verfügung:

public function showAction() {
  $args = $this->request->getArguments();
  echo $args['myField];
}

Eigentlich geht Extbase noch einen Schritt weiter, indem die Felder aus dem Formular automatisch mit dem Model verglichen und validiert werden. Das wäre aber am Besten in Mittwalds Doku nachzulesen: https://www.mittwald.de/fileadmin/downloads/pdf/dokus/Extbase_Fluid_Dokumentation.pdf

LG sun