Wie gibt man Fehler "richtig" im Front-End aus?

  • Hallo,


    in einem selbst gebauten Modul verwende ich die Zeile JFactory::getApplication()->enqueueMessage('...', 'error'); um einen Fehler auszugeben. Jedoch wird dieser auch angezeigt, wenn in der Joomla! Systemkonfiguration unter Server "Fehler berichten" auf "Keine" steht. Ich wäre jetzt davon ausgegangen, dass die Meldung dann nicht mehr erscheint. Gibt es da einen anderen Befehl dafür? Aktuell hab ich es über den Umweg gelöst, dass im Modul Debugging an- oder ausgeschaltet werden kann. Sehr sauber ist das allerdings nicht.

  • Das sind zwei unterschiedliche Arten von Fehlern. In der Konfiguration kannst du die Anzeige von Fehlern, Warnungen und Mitteilungen von PHP einstellen. Darunter fallen z.B. falsche Funktionsaufrufe, Fehler im Programmcode oder Hinweise auf mögliche Probleme mit zukünftigen Versionen von PHP. Diese kannst du auf einer Produktivseite abschalten, wenn du davon ausgehen kannst, dass alles ordentlich programmiert ist. Das sind aber keine Meldungen, die du selbst ausgibst. Die kommen von PHP.


    Was man normalerweise mit JFactory::getApplication()->enqueueMessage('...'); ausgibt, sind Fehler, Warnungen oder Mitteilungen innerhalb der Anwendung. Das sind die grünen, blauen, gelben oder roten Boxen, die du im Adminbereich oben siehst, wenn du eine Aktion ausgeführt hast. Also z.B. Fehler, wenn ein Benutzer nicht die nötigen Berechtigungen für eine Aktion hat oder eine Aktion aus anderen Gründen fehlgeschlagen ist, oder aber auch einfach Mitteilungen über erfolgreich durchgeführte Aktionen ("Der Artikel wurde gespeichert."). Diese zu unterdrücken würde keinen Sinn ergeben, da sie sich direkt an den Nutzer richten und Feedback auf dessen Aktionen sind.


    Wenn du Debugging-Meldungen hast, die nur für den Seitenbetreiber interessant sind, kannst du sie auch loggen, anstatt sie auszugeben: https://docs.joomla.org/Using_JLog

  • Zitat

    Aktuell hab ich es über den Umweg gelöst, dass im Modul Debugging an- oder ausgeschaltet werden kann. Sehr sauber ist das allerdings nicht.

    BTW. Du kannst auch den globalen Schalter für "Debugging" & "Fehler berichten" abfragen.


    Code
    JFactory::getApplication()->get('debug')
    
    JFactory::getApplication()->get('error_reporting')


    Ich persönlich würde aber auch eher den Weg den Harmageddon vorgeschlagen hat wählen, je nachdem welche Meldung man ausgeben möchte eine PHP Error message, Nachricht an den Benutzer oder ein Log schreiben.