Ankündigung

Einklappen
Keine Ankündigung bisher.

Framework Forms vs HTML, wieso Template Engines nutzen?

Einklappen

Neue Werbung 2019

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

  • Framework Forms vs HTML, wieso Template Engines nutzen?

    Ahoi,

    Ich bin gerade dabei simple Formulare zu erstellen. Wie wohl (fast) jedes Framework wird mir eine Template Engine mitgeliefert. (In meinem Fall PhalconPhp und Volt, aber für die Frage nicht von Relevanz in anderen Frameworks hab ich ähnliche Vorgehensweisen gesehen)

    Ich habe nun die Möglichkeit ein Textfeld im Template über folgenden Code zu erstellen:
    Code:
     
     {{ text_field('name', 'type':'text', 'size':25, 'placeholder':'Username', 'class':'form-control') }}
    Was dann wohl wieder in PHP Code umgewandelt wird derso aussieht:
    PHP-Code:
    <?php echo $this->tag->textField(array('name''type' => 'text''size' => 25'placeholder' => 'Username''class' => 'form-control')); ?>
    Was dann das hier in HTML wird:
    HTML-Code:
      <input type="text" id="name" name="name" class="form-control" size="25" placeholder="Username" />

    Meine konkrete Frage, welchen Vorteil hat es für mich die Php-Variante vom Framework oder die Template-Engine Variante zu wählen, statt direkt HTML zu schreiben?
    Bieten Template-Engines bei komplexeren Anwendungsfällen irgendwelche Vorteile? Oder ist der einzige "Vorteil", dass ich statt HTML nun die Template-Sprache beherschen muss?

    Liebe Grüße
    ChromOxid

  • #2
    Meine subjektive Meinung: Keinen. Schreib den HTML-Code und gut ist.

    Es würde dann vielleicht etwas bringen, wenn das Formular dynamisch erstellt wird. Aber wenn es dir nur darum geht statisch ein Textfeld zu erstellen, bringts meiner Ansicht nach keinen Mehrwert. Im Gegenteil, das kann sogar mühsamer sein.

    Ich würde eher den umgekehrten Weg gehen und immer HTML-Code schreiben und diesen nachträglich im Code-Behind manipulieren (ähnlich wie zB. PHPTAL). Also wenn ichs mir aussuchen kann.

    Kommentar


    • #3
      Form-Builder in Template-Engines haben den Vorteil das die Attribute der Tags nebst values stets standard-konform definiert werden. Innerhalb von HTML gibt es sonst für dich Context-Sprünge die du selbst behandeln musst.

      Als Beispiel der a-tag und die zu nutzende URL als href-Attribut:

      Falsch:
      HTML-Code:
      <a href="http://example.org/someapp/someaction?credential_a=value&credential_b=value">someaction</a>
      Richtig:
      HTML-Code:
      <a href="http://example.org/someapp/someaction?credential_a=value&amp;credential_b=value">someaction</a>
      DOMDocument macht diese context-sensitiven Notwendigkeiten bspw. automatisch:

      PHP-Code:
      $url 'http://example.org/someapp/someaction';
      $query = ['credential_a' => 'value''credential_b' => 'value'];

      $queryUrl sprintf('%s?%s'$urlhttp_build_query($query));

      $dom = new DOMDocument();
      $a $dom->createElement('a''someaction');
      $a->setAttribute('href'$queryUrl);

      var_dump(
        
      $queryUrl,
        
      $dom->saveHtml($a)
      ); 
      Code:
      string(75) "http://example.org/someapp/someaction?credential_a=value&credential_b=value"
      string(104) "<a href="http://example.org/someapp/someaction?credential_a=value&amp;credential_b=value">someaction</a>"
      [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

      Kommentar


      • #4
        Danke, das ist zum Beispiel einer der Vorteile auf den ich sonst vermutlich nicht gekommen wäre. Ich habe dazu durchaus auch ein bisschen gegoogelt, aber so einfach und präzise war das nirgends formuliert. Ich schätze ich werde mich trotzdem erstmal für die nur HTML Variante entscheiden.

        Kommentar


        • #5
          Ein weiterer Vorteil kann z.B. sein, dass du flexibler bist: Als ich in einem grösseren Projekt von "üblichen" Forms auf Semantic-UI umgestiegen bin, war das fast nur ein austauschen des Form-Templates. In den eigentlichen Templates waren fast keine Anpassungen notwendig.
          [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

          Kommentar


          • #6
            Temple-Engines (TE) wurden ja eigentlich entwickelt das auch PHP unkundige (also z.B. Leute ohne Programmiererfahrung oder Designer) an der Optik und clientseitigen Funktionalität Dinge ändern ohne gleich die ganze Anwendung oder Teile davon lahm zu legen. Letzendlich handelt es sich um eine Sandbox in der solche Leute dann nach Herzenslust wirken können. Klar die Engine eigene Sprache muss auch derjenige können der das tut. Aber die ist so minimalistisch, das bekommt selbst einer nach kurzer Zeit hin der bisher nix mit Programmieren am Hut hatte.

            Das funktioniert erstaunlich gut. Die Designer bei mir auf Arbeit haben damit jedenfalls keine Probleme.

            Bei privaten Projekten schreibe ich auch alles so das eine TE zum einsatz kommt. Das mache ich weniger wegen mir sondern vielmehr das auch Leute z.B. Themes zur Webanwendung beisteuern können die halt nix mit PHP, Perl oder Python am Hut haben.

            Auf jeden fall hat bei mir das Thema "Template Engine" in ~10 Jahren extensiver Nutzung keine negativen Erinnerungen hinterlassen.

            Der initiale Aufwand ist größer wie wenn man es ohne TE macht, klar. Der Pflegeaufwand sinkt aber.

            Edit: Was man dabei aber nie vergessen sollte. Man holt sich damit eine externe Library an Board. Manche sehen das als Nachteil. Ich nicht…

            Edit2: Was mir gerade noch als mögliche Problematik dazu einfällt: Viele Template-Engine Verfasser dokumentieren Ihre Template Sprachsyntax so das Programmierer sicher kein Problem haben das zu verstehen aber die Zielgruppe u.U. nicht so direkt wie es sein sollte.

            Gruß, Ulf
            PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

            Kommentar


            • #7
              Die meisten PHPbasierten TemplateEngine bringen den eigentlichen Vorteil einer TemplateEngine nicht gut rüber. Eine gute TemplateEngine arbeitet standardmäßig mit Mechanismen, die bestimmte Sicherheitsprobleme wie Crossitescripting verhindern und viele Tools fürs Layouting mitliefert. Die aus meiner Sicht aktuell beste TemplateEngine "Twig" ist da noch ziemlich lau ausgestattet. Mit Standard-HTML zu arbeiten, ist aber völliger quatsch. Andere Merkmale einer TemplateEngine wurden hier ja schon genannt.

              Kommentar


              • #8
                Zitat von rkr Beitrag anzeigen
                Eine gute TemplateEngine arbeitet standardmäßig mit Mechanismen, die bestimmte Sicherheitsprobleme wie Crossitescripting verhindern und viele Tools fürs Layouting mitliefert. Die aus meiner Sicht aktuell beste TemplateEngine "Twig" ist da noch ziemlich lau ausgestattet.
                Ja, weil in Symfony das escapen automatisch über das Request Objekt funktioniert. Außerdem hat das in Kombination mit Symfony noch weitere Vorteile: Man kann die Form im Controller anlegen und es z. B. als JSON zurück schicken. Ist in Hinblick auf RESTful APIs ganz interessant.

                Kommentar


                • #9
                  ich denke nicht dass Symfony das Request objekt automatisch escaped, zumindestens fand ich hier nichts https://github.com/symfony/http-foun...er/Request.php , es ist wohl eher Twig der die ausgabe escaped(wenn man es möchte) es gibt auch fälle wo man html ausgeben will und da wäre das escapen fehl am Platz
                  apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                  Kommentar


                  • #10
                    Zitat von derwunner Beitrag anzeigen
                    Ja, weil in Symfony das escapen automatisch über das Request Objekt funktioniert. Außerdem hat das in Kombination mit Symfony noch weitere Vorteile: Man kann die Form im Controller anlegen und es z. B. als JSON zurück schicken. Ist in Hinblick auf RESTful APIs ganz interessant.
                    wobei man bei seiner RESTful Api driven Site wieder eine template engine nutzt.
                    welche ausser Mustache sind denn in HTML und JS nutzbar?

                    Kommentar


                    • #11
                      Zitat von meta02 Beitrag anzeigen

                      wobei man bei seiner RESTful Api driven Site wieder eine template engine nutzt.
                      welche ausser Mustache sind denn in HTML und JS nutzbar?
                      Die HTML/JS Welt denkt da etwas weiter, UI Integratoren wie React, Ractive ( Mustache based ) oder Polymer.
                      [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                      Kommentar

                      Lädt...
                      X