Warning: include_once(/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php): failed to open stream: No such file or directory in /var/www/html/fields/dbp11/local/config.php on line 4

Warning: include_once(): Failed opening '/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php' for inclusion (include_path='.:/opt/php/lib/php') in /var/www/html/fields/dbp11/local/config.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/fields/dbp11/local/config.php:4) in /var/www/html/pmwiki-2.2.86/pmwiki.php on line 1250
Datenbankpraktikum SS 2011 - Frontend - HAML

Formulare

Ein Formular in HaML zu erstellen ist relativ simpel. Allerdings ist es um einiges komplexer, die Werte, die in das Formular vom Benutzer eingegeben werden auch so bereitzustellen, dass der Controller sie auffangen und weiterverarbeiten kann. Hierzu dient in RoR das Modul FormHelper, dass ein Untermodul des Moduls ActionViews::Helpers ist.

In HaML sieht der Kopf unserer Formulare deshalb folgendermaßen aus:
= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f|
  = devise_error_messages!

Hierbei erzeugen wir mit |f| eine Instanz von der Klasse FormBuilder mit Namen f. Diese Klasse FormBuilder enthält nun eine Reihe von Methoden, mit deren Hilfe man nun Strucktur und Funktionalität des Formulars, das man erzeugen möchte, festlegen kann.

Eines der einfachsten Elemente ist das text_field:
= f.text_field:address, :required=>"required"

Neben dem text_field haben wir für unsere Formulare natürlich noch eine ganze Reihe weiterer Elemente verwendet. Wie:

  • text_field (eine Textzeile)
  • text_area (Textfeld für freitext)
  • email_field (dies erkennt automatisch ob das eingegebene von der Form abc@cde.ff ist)
  • password_field (automatisch das eingegebene in der Form *** anzeigt)
  • check_box (generiert ein Feld zum Ankreuzen, zum füllen von boolean- Werten)
  • select (generiert ein Drop-down Menü mit dem angegeben Inhalt)
  • date_select (generiert drei Drop-down Menü für Tag, Monat, Jahr)
  • submit (erzeugt einen link, der beim klicken das Formular an den Controller sendet)



Doch was passiert mit den Werten die in das Formular eingegeben werden nun genau?

Abb. 1: Vom Formular zum Controller


Abb1 zeigt, am Beispiel des Formulars für die Editierung eines Profils, wie die Kommunikation mit den Controllern funktioniert. Hierbei werden erst die Werte, die, durch das anlegen des Profils, bereits im Modell stehen von der edit- Methode des User_Controllers aus dem Modell geholt und an die View weitergegeben, sodass sie im Formular zur Änderung stehen. Drückt der Anwender nun nach dem Ändern der Daten auf submit, so wird die Seite zuerst in HTML konvertiert und anschließend an den Browser gesendet. Ist dies erfolgreich, so werden die Werte des Formulars in einen Hashtable ausgelesen. Diese kann dann anschließend von der update- Methode des User_Controllers ausgelesen und ins Modell geschrieben werden.


Page last modified on August 19, 2011, at 06:51 PM