Zum Inhalt springen

Fehlermeldung bei New/Create Action

Erstellt am 21. Oktober 2012 · 7 Antworten · letzte Antwort am 25. Oktober 2012

Tags: Fluid, Frage

besucher80 ·

Hi, ich habe in meinem Controller 2 Actions. Einmal new und create. Bei new wird mir nur ein Formular angezeigt, bei create soll der eingegene datensatz gespeichert werden. Aber immer wenn ich ich das Formular absenden gibt es ne Fehlermeldung. Es wird auch kein redirect gemacht. Hier mal Code ( bewusst kurz gehalten ).

/**
	 * action new
	 *
	 * @param Tx_Tl24Notepad_Domain_Model_Notepad $notepad
	 * @dontvalidate $notepad
	 */
	public function newAction(Tx_Tl24Notepad_Domain_Model_Notepad $notepad = NULL) {
				
		$this->view->assign('notepad', $notepad);
		
	}
	
	/**
	 * action create
	 *
	 * @param Tx_Tl24Notepad_Domain_Model_Notepad $notepad
	 */
	public function createAction(Tx_Tl24Notepad_Domain_Model_Notepad $notepad) {
				
		$this->addFlashMessage('OK');
		$this->redirect('notepad');
		
	}

Und das Formular:

<f:flashMessages />

<f:form name="notepad" objectName="{notepad}" action="create">
  <f:form.textfield name="notes" value="some value" property="notes" />
  <f:form.submit />
</f:form>

Also es kommt immer die Meldung:

An error occurred while trying to call Tx_Tl24Notepad_Controller_NotepadController->createAction()

Er bleibt immer bei der create Action hängen. Wieso ist das so? Hab schon gelesen, das man die errorMessages ausschalten kann, aber das ist doch so nicht gewollt oder?

Für ne Aufklärung wäre ich sehr dankbar.

Danke
Stefan

besucher80 ·

Hi, danke erstmal für die Antwort. Ich werde das morgen noch mal testen aber bin fast der Meinung das ich das so auch schon probiert habe. Das mit object="{notepad}" ist ja eigentlich Pflicht aber wozu braucht man eigentlich objectName? name="" gibt es ja auch noch.

besucher80 ·

Hi, okay. Ich bin jetzt auf die Ursache gestoßen. Ich habe im Model 5 Eigenschaften. In meinem Formular benötige ich aber grad nur 2 Eigenschaften. Wenn ich das Formular nun absende, werden wohl alle Eigenschaften validiert, da es so im Model festgelegt ist und er schmeißt mir die Fehlermeldung raus. Hm, das ja nicht so schön. Kann man die Validierung für einzelne Eigenschaften umgehen/ausschalten? Also wenn ich die Validierung der restlichen Eigenschaften im Model entferne , dann geht das Formular ohne Probleme.

Unbekannter Benutzer ·

Dann solltest du dein Model überdenken. Ein Model sollte immer in sich valide sein. Da sollte es keine halben Sachen geben. Dann sind das vielleicht eher zwei Models mit einer Relation?

besucher80 ·

Also ich denke das hat schon seine Richtigkeit. Wenn ich das Formular an ein Object binde mit object="{object}" ist ja klar das alle Eigenschaften validiert werden beim Absenden des Formulares. Da ich aber bei einem Login Formular nur 2 Eigenschaften des Nutzer Object validieren brauch, nämlich Passwort und Benutzername, kann ich es wohl so nicht machen. Ich habe jetzt einfach bei der Action auf die das Formular verweist die Anno @validate $username StringLenth() und @validate $password StringLenghtZ() verwendet. Das geht soweit alles wunderbar. Die Werte werden validiert und es wird eine Meldung ausgeworfen beim Fehlerfall. Jetzt ergibt sich allerdings ein neues Problem. Ich muss ja nun prüfen, ob es einen Benutzer zu den eingegebenen Benutzername und Password gibt. Dazu wollte ich einen eigene Validator Klasse anlegen. Aber wie übergebe ich nun die Parameter. Oder muss ich das einfach mit _GP('username'); in der Funktion auslesen?

Unbekannter Benutzer ·

Warum baust Du einen eigenen Login? Nimm doch die vorhandenen Möglichkeiten... 😉

Was Du willst ist ja keinen user erzeugen sondern einen Login durchführen, insofern solltest du in deiner loginAction auch kein user object erwarten....

besucher80 ·

Hi, ja das ist mir schon klar 🙂 Hab ich ja im vorherigen Post auch geschrieben. Nur wie kann ich die Eingaben nun validieren? Sodass mir auch die errorClass bei den Feldern ausgegeben wird. Wahrscheinlich nicht so einfach oder?