KB form

Aus Kitbooth Wiki: Deutsch

(Unterschied zwischen Versionen)
Wechseln zu:Navigation, Suche
Admin (Diskussion | Beiträge)
(Die Seite wurde neu angelegt: „== Funktionalität == {{Zurück|Klassen}} Die Klasse '''KB_form''' unterstützt den Entwickler beim Erstellen und Prüfen von Formularen. Aus einem sp…“)
Zum nächsten Versionsunterschied →

Version vom 29. Juni 2010, 01:43 Uhr

Inhaltsverzeichnis

Funktionalität

Zurück zu: Klassen

Die Klasse KB_form unterstützt den Entwickler beim Erstellen und Prüfen von Formularen. Aus einem speziellem, übergebenem Array können Formulare komplett oder partiell ausgegeben werden. Zusätzliche Funktionen wie ein E-Mail-Versand oder eine Registrierung werden bei der Auswertung der übersendeten Daten unterstützt.

Verwendung

KB_form wird pro Formular einmal instanziert. Die Core-Funktionalität stellt dafür die Funktion $kbc->form_o() im globalen Kontext zur Verfügung. Die Formular-Klasse erwartet als Parameter ein Array mit den Formulardefinitionen sowie ein optionales Array mit Einstellungen und Vorgaben.

Formulardefinition

Die Formulardefinition ist ein mehrdimensionales Array. Jeder Eintrag im Array enthält eine Definition für ein bestimmtes Formular-Element. Jedes Formular-Element wird wiederum durch ein unbenanntes Array definiert. Die unterschiedlichen Formular-Elemente werden zwar ähnlich aber nicht in allen Fällen identisch definiert.

Beispielhaftes Registrierungsformular:

$formular = Array(
  array('input', 1, 'E-Mail-Adresse:','email', ,'Bitte geben Sie eine korrekte E-Mail Adresse an.', ,),
  array('password_reg', 1, array('Passwort:','Passwort Wiederholung:'),'password', ,'Die eingegebenen Passwörter sind nicht identisch.',, ),
  array('input', 1, 'Vorname / Titel:','fname', ,'Bitte geben Sie Ihren Vornamen / Titel an.',, '/[a-zA-Z\-]/'),
  array('input', 1, 'Nachname:','name', ,'Bitte geben Sie Ihren Namen an.',, '/[a-zA-Z\-]/'),
  array('input', 1, 'Firma:','company', ,'Bitte geben Sie Ihre Firma an.',, '/[a-zA-Z0-9\-]/'),
  array('captcha', 1, 'Verifizierungscode:','code', ,'Bitte geben Sie den Code an.', , , "ffffff"),
  array('button', 1, 'absenden', 'send')
);

Der erste Eintrag eines Formular-Element-Arrays ist immer die Bezeichnung des Formular-Elements gefolgt von einem Boolean ob das aktuelle Element bei einer Prüfung in Augenschein genommen werden soll. Der dritte Eintrag beinhaltet immer das Label eines Elements; der Vierte das Attribut name. Der fünfte Eintrag

Typische Einteilung eines Formular-Element-Arrays:
1. Bezeichnung des Formular-Typs (Achtung, nicht Bezeichnung nach HTML Standard, sondern nach der implementierten Funktion in KB_form)
2. Boolean ob das aktuelle Element bei einer Prüfung berücksichtigt werden soll
3. Label den Elements
4. HTML - Attribut name
5. Voreingetragene Werte oder Auswahlmöglichkeiten (Übergabe als Array) bei select, radio und checkbox
6. Angepasste Fehlermeldung zur Ersetzunug der Standardnachricht
7. zusätzliche optionale Attribute wie class oder style z.B. style="color:red", die ohne weitere Prüfung integriert werden.
8. regulärer Ausdruck für preg_match um die Eingabe validieren

Settings

Settings ist ein ein- oder mehrdimensionales Array, welches die Verhaltensweise der Klasse KB_form steuert oder weitere Parameter für die nachfolgende Verarbeitung übergibt.

Beispielhaftes Array:

$settings = array('error' => 'err_mess', 'autocheck' => 'send', 'register'=>true, 'mail' => $core['form_email'], 'subject' => 'Registrierung' );

Die Array Elemente setzen folgende Parameter:

error -> die CSS Klasse der Fehlermeldungen wird auf err_mess gesetzt autocheck -> sobald send im $_POST Array vorhanden ist, wird die automatische Eingabeprüfung gestartet register -> gibt der KB_form zu verstehen, dass eine Registrierung vorgesehen ist. Es wird dann automatisch nicht nur die Eingabe validiert sondern auch die E-Mail-Adresse als primäres Attribut mit der Usertabelle abgeglichen. mail -> Ersetzung der Standard - E-Mail - Adresse bei Mail - Versand subject -> Ersetzung des Standardbetreffs bei Mail - Versand

... much more will follow ...


Instanzierung und Übergabe der Parameter

Da der include bereits in der Core-Funktionalität vorgenommen wurde, steht die Klasse sofort zur Verfügung. Ebenso stellt diese eine einfach Instanzierungsvariante zur Verfügung. Mit dem Aufruf (KB_core::form_o())

$form = $kbc->form_o($formular, $settings [,$values]); 

wird eine neue Instanz der Klasse Formular zurück geliefert. $formular und $settings werden dabei zwingend voraus gesetzt, $values ist eine optionale Übergabe.

Formularausgabe

generate_all()

Die einfachste Möglichkeit der Ausgabe ist die Funktion $form->generate_all() (KB_form::generate_all). Diese erzeugt das komplette Formular mit allen HTML Tags. Die optionalen Parameter separator, class und action sollten zuvor Eintrag in den Settings übergeben werden. Dieser wird jeweils einmal nach Ausgabe des Label, des Formular-Elements sowie des eventuellen Fehlermeldung angewand.

$formular = ( array('input', 1, 'Name','name', ,'Bitte geben Sie Ihren Namen an.', ,) );
$settings = array('separator' => '<br>');
$form = $kbc->form_o($formular, $settings);
$form->generate_all();

gen_all_tpl()

Die Funktion $form->gen_all_tpl() (KB_form::gen_all_tpl) entspricht weitgehend der Funktion $form->generate_all(); erzeugt das Formular aber mit einem übergebenen Template. Der Template-String muss zuvor in den Settings übergeben werden, ebenso die optionalen Parameter template_pre, template_post, class und action Dieser String kann dabei beliebiges HTML enthalten, setzt aber für eine erfolgreiche Ausgabe die dre Platzhalter <#1#> (=Fehlermeldung) <#2#> (=Label) <#3#> (=Formular-Element) voraus.

$formular = ( array('input', 1, 'Name','name', , 'Bitte geben Sie Ihren Namen an.', ' ',' ') );
$settings = array('template' => '<tr> <td><#2#></td> <td><#3#></td> <td><#1#></td> </tr>');
$form = $kbc->form_o($formular, $settings);
$form->gen_all_tpl();

Beispiele

Navigation
Werkzeuge