Formatierte Fehlerausgabe in Div

nchristoph

Erfahrenes Mitglied
Hallo zusammen,

wie kann ich Fehlermeldungen(Exceptions, selber generierte) in einem dafür vorgesehenen Div, nennen wir es Errormessage, ausgeben.

Ich habe es mittles Javascript versucht, bringt allerdings nicht viel, wenn einer der User JS abgedreht hat.

Hab das bei verschiedenen CMS gesehen, aber im Code nichts gefunden, wie das gemacht wird.

Kann mir eventuell wer nen hinweis geben?
 
Wie meinst du das ? So ne Art Popup oder alert Fenster ?
Das machst du dann einfach mit CSS anstatt JavaScript...oder du benutzt das noscript Tag und weist den Nutzer darauf hin das JS für die Website aktiviert sein mus..
Mfg
 
Ok, mal kurz im Browser geschrieben würde das ca so gehen:

PHP:
<?php

try {
// hier dein code
} catch (Exception $e) {
    printf('<div>%s</div>', $e->getMessage());
}
 
So wie hier mein ich:

attachment.php


Die divs sind Standard hidden, bei einer exception wird er Sichtbar geschaltet, je nach Fehler die Klasse geändert und der Fehler drinnen angezeigt.

Aber wie das mit PHP alleine geht hab ich keine Ahnung davon.

@alxy
Dein Code ist Interessant, erstellt aber jedes mal einen neuen Div.

Wie würde das Funktionieren?
 
Bei fast allen Content-Management-Systemen hast du einen sehr hohen Grad an Abstraktheit und Delegation der Aufgaben. Da wird der ausführende Controller wohl eher nicht die Fehlermeldung anzeigen, sondern sie eher setzen (in eine Variable speichern). Einer der höheren Controller wird sich dann darum kümmern, dass die Fehlermeldung zur View gelangt. Die View zeigt diese dann schließlich an.
 
Naja, es ist eben eine logische Schlussfolgerung, ein System so zu bauen. Beispielsweise könntest du später statt eine DIV-Ausgabe auch eine Protokollierung in eine Logdatei oder in eine Datenbank vornehmen.

Eine reine DIV-Ausgabe ist natürlich ein Einzeiler. Wie schaut denn dein aktuelles Gebilde aus? Dann könnte ich dir konkretere Vorschläge geben.
 
Ne einfache Modifikation wäre:
PHP:
<?php

$messages = array();
try {
// hier dein code
} catch (Exception $e) {
    $messages[] = $e->getMessage();
}


try {
// und noch ein Exception werfender Codeabschnitt
} catch (Exception $e) {
    $messages[] = $e->getMessage();
}

// Ausgabe
printf('<div>%s</div>', implode('<br />', $messages));

Aber wie @ComFreek schon andeutete - es lässt sich natürlich noch beliebig weiter abstrahiere. Laravel z.B. nutzt dafür den MessageBag, der noch verschiedene Methoden zum schönen Wieder-Ausgeben bereitstellt: https://github.com/laravel/framework/blob/4.2/src/Illuminate/Support/MessageBag.php
 
Aktuelles Gebilde hab ich nicht da ich mit meinem CMS nomma ganz von vorne angefangen habe.

Meinen alten Javascriptansatz will ich dieses mal gar nicht verwenden, weil es einfach nur Blödsinn ist und leicht abzuschalten.

Meine Idee wäre folgender:

Den Div standardmässig auf hidden setzten, ne Funktion schreiben, welche bei nem Fehler aufgerufen wird und je nach Fehlerart: Exception, Notice oder einfacher nicht auf Fehler bezogener ne andere Klasse aktiviert.

Wäre wahrscheinlich die einfachere Möglichkeit oder?
 
Zurück