Ankündigung

Einklappen
Keine Ankündigung bisher.

Exceptions innerhalb von Views?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Exceptions innerhalb von Views?

    Hey,

    konkret geht es um das Werfen von Exceptions innerhalb von Laravel-Views, aber ganz allgemein gefragt: Darf ich in MVC vom Konzept her innerhalb von Views (PHP-Templates) Exceptions werfen?

    Nicht direkt innerhalb eines Templates aber z. B. weil ich in einem Template eine Methode aufrufe die unter bestimmten Bedingungen in einen ungültigen Zustand geraten kann - sagen wir irgend eine Methode die mir HTML-Code für irgend eine Komponente zurückgeben soll und dabei als Parameter eben auch potenziell ungültige Werte annehmen kann.

    Hoffe das ist soweit verständlich. Vielleicht auch eine blöde Frage, keine Ahnung.

  • #2
    Hast du ein konkretes Beispiel? Wie wird der ungültige Zustand herbeigeführt und warum weißt du davon erst im View?

    Kommentar


    • #3
      Naja in der View bzw. konkreter im von der View verwendeten Template wird irgend eine Methode aufgerufen:
      PHP-Code:
      ...
      <
      div class="irgendwas">
         {{ 
      HTML::dateTimePicker('31.09.2014') }}
      </
      div>
      ... 
      Die Methode soll also Code für einen DateTime-Picker in das Template einfügen und dabei den 31.09.2014 als Initial-Datum anzeigen - was nicht geht, da der Monat nur 30 Tage hat:
      PHP-Code:
      class HTML {
         public static 
      dateTimePicker($dateString) { // (in Laravel nicht static aber das ist hier irrelevant)
              
      if (! self::validDate($dateString)) {
                  throw new 
      MyWrongDateException();
              }
              return 
      '<div class="datetime"><input type="text" name="datetime" data-value="'.$dateString.'" /></div>';
          }
          ...

      Kommentar


      • #4
        Meiner Meinung nach ist das völlig legitim, die Exception sollte aber entweder nach ganz oben durchgereicht werden oder innerhalb der Klasse bleiben und z. B. ein Logging auslösen.

        Kommentar


        • #5
          ISt sowas Grund für eine Exeption?
          macht es im konkreten fall nicht auch sinn, einfach den 1.October zu nehmen, mit nem warnhinweis?

          Kommentar


          • #6
            Ja, das würde gehen. Das ist nur ein fiktives Beispiel. Mir ging es um ein Beispiel bei dem man nicht einfach schon in einem der View vorgeschaltetem Controller mögliche Fehlerquellen identifizieren kann.

            Kommentar


            • #7
              dir mag es akademisch und weltfremd vorkommen monolith, die Frage aber von Tropi halte ich für berechtigt:"(..)warum weißt du davon erst im View?"
              mE. darf es im view keine solchen zustand (vor nocht bekannt) geben, ausser die instanzierung des view.

              Kommentar


              • #8
                Das sehe ich eigt. ähnlich wie moma und handhabe es bei mir grundsätzlich so, dass Views relativ tolerant unterwegs sind und ungültige Anweisungen im schlimmsten Fall Leerstrings produzieren. Alles was ich abfangen möchte, prüfe ich einen Schritte vorher im Controller.
                [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

                Kommentar


                • #9
                  Zitat von monolith Beitrag anzeigen
                  Darf ich in MVC vom Konzept her innerhalb von Views (PHP-Templates) Exceptions werfen?
                  Natürlich. Exceptions sind ein Mittel zur Fehlerbehandlung und Fehler können ebend auch in Views auftreten. Es ist auf jedenfall eleganter eine Exception zu werfen, als irgendwie "tolerant" sein zu wollen oder am Ende ein PHP Error zu triggern.
                  Was ich aber nicht machen würde, ist eine Exception im View zu fangen. Die Fehler im View sollten wirklich "unvorhersehbar" sein. Falsche Eingaben vom Benutzer zählen da also defintiv nicht dazu. Was ich meine geht mehr in Richtung Bugs.

                  Kommentar

                  Lädt...
                  X