Validierung bei Extension: An error occurred while trying to call ...->createAction()

  • jimmykimmy jimmykimm...
    Padawan
    0 x
    59 Beiträge
    0 Hilfreiche Beiträge
    09. 08. 2011, 14:17

    Hallo zusammen!
    Ich habe mir mit dem "ExtensionBuilder" eine winzige Extension geschrieben, die mir Personen mit Vor- & Nachnamen speichert.
    Der "ExtensionBuilder" generiert ja das Grundlegende erst einmal von alleine. Somit kann ich direkt ein paar Datensätze anlegen, löschen und editieren.

    Mein Problem:
    Wenn ich ein Feld, das mit "required" versehen ist, erhalte ich eine FlashMessage mit folgendem Inhalt:

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

    Wie kann das sein? Wenn eine Validierung fehlschlägt, wird createAction doch garnicht aufgerufen, aber warum versucht er es an dieser Stelle?
    Das selbe Problem habe ich, wenn ich per Annotationen validieren (z.b. StringLength()).

    Das ist doch kein korrektes Verhalten?! Kann mir jemand einen Tipp geben was ich ändern kann? Es soll natürlich eine sinnige FlashMessage angezeigt werden.


  • 1
  • typonewbe typonewbe
    Sternenflotten-Admiral
    0 x
    197 Beiträge
    3 Hilfreiche Beiträge
    05. 09. 2011, 17:57

    Hallo jimmykimmy,

    konntest du das Problem schon lösen? Stehe gerade selber vor diesem Problem was ich bissl merkwürdig finde ist, das ich mit Extbase 1.2.1 dieses Problem nicht hatte erst seit 1.3 kommt dieser Fehler.

    Gruß typonewbe

  • georg.n georg.n
    Typ im Roten Hemd
    0 x
    3 Beiträge
    0 Hilfreiche Beiträge
    05. 10. 2011, 17:36

    Hallo jimmykimmy,

    Vieleicht hast Du die Lösung inzwischen schon entdeckt.

    Duch Einfügen der folgenden Zeilen im jeweiligen ActionController (MitarbeiterController) werden diese FlashMessages deaktiviert:

    1. /* Deaktiviert FlashMessage für Fehler
    2.  * @see Tx_Extbase_MVC_Controller_ActionController::getErrorFlashMessage()
    3.  */
    4. protected function getErrorFlashMessage() {
    5. return '';
    6. }

    Ändert man die Funktion kann man auch andere Texte als FlashMessage an Stelle des Standardtext ausgegeben lassen.

    Grüße Georg

  • wolfi02 wolfi02
    R2-D2
    0 x
    108 Beiträge
    0 Hilfreiche Beiträge
    05. 01. 2012, 14:28

    Besser ist es noch als Returnwert ein FALSE zu liefern. Dadurch wird auch nicht versucht eine ungeordnete Liste im FE zu generieren.

    1. /* Deaktiviert FlashMessage für Fehler
    2.  * @see Tx_Extbase_MVC_Controller_ActionController::getErrorFlashMessage()
    3.  */
    4. protected function getErrorFlashMessage() {
    5. return FALSE;
    6. }

  • fs_webteam fs_webtea...
    Jar Jar Binks
    0 x
    1 Beiträge
    0 Hilfreiche Beiträge
    05. 03. 2013, 12:12

    Vielen Dank für die Lösung! Sie funktioniert auch in extbase 6.0.0.

    Ich sehe da für mich aber noch einen Haken. Aktuell bekomme ich mit FlashMessages und FormErrors folgende Ausgabe:

    1. An error occurred while trying to call Vendor\Example\Controller\PersonController->updateAction()
    2. Validation errors for argument "person"
    3. person: Validation errors for property "firstName"

    Mit der Lösung blende ich jetzt alle FlashMessages aus, dennoch hätte ich gerne im Erfolgsfall die Ausgabe »Your Person was updated.«:
    1. $this->flashMessageContainer->add('Your Person was updated.');

    Ich finde die Vermischung von »System«-Meldungen und den von mir gewünschten Ausgaben etwas seltsam.
    Wie werde ich also nur bestimmte FlashMessages los? Oder ist die update-Fehlermeldung vermeidbar (Fehler im Model)?

    Vielen Dank für eure Hilfe
    Philipp

  • 1