Formulare für die Seitenausgabe ausgeben
Aus PapayaCMS
Wenn Sie Formulare für die Seitenausgabe erzeugen wollen, können Sie das dazu erforderliche XML natürlich selbst im Content-Modul schreiben. Sie können sich jedoch viel Arbeit ersparen, wenn Sie das Formular-Toolkit verwenden, das in papaya CMS integriert ist. Dadurch erhalten alle erzeugten Formulare eine standardisierte Struktur, die dann später im Template einfacher in das Zielformat transformiert werden kann. Das Formular-Toolkit ist in der Klasse base_dialog implementiert.
base_dialog benutzen
Das folgende Listing zeigt, wie Sie ein Formular mit der Klasse base_dialog anlegen können:
- Definieren Sie zunächst ein Array, in dem Dialogfelder definiert werden: Dialogfelder definierenNäheres zur Definition von Dialogformularen erfahren Sie in Eingabemasken für Inhaltsmodule definieren.
function getDialogXML() { $fields = array( 'user_name' => array('Name', 'isNoHTML', TRUE, 'input', 200, '', 'Name'), 'user_email' => array('E-Mail', 'isNoHTML', TRUE, 'input', 200, '', 'username@domain.tld', 'left'), 'subject' => array('Betreff', 'isNoHTML', TRUE, 'input', 200, '', 'Betreff'), 'message' => array('Nachricht', 'isSomeText', TRUE 'textarea', 5, '', 'Deine Nachricht') ); }
- Definieren Sie ein Array mit Standarddaten. Achten Sie darauf, dass die Schlüssel der jeweiligen Datenfelder mit den entsprechenden Schlüsseln im Dialogfeld-Array identisch sind: Array mit Standarddaten definieren
function getDialogXML() { //Ausgeschnitten: $fields-Array $data = ( //entspricht $field['user_name'] 'user_name' => 'Name', //entspricht $field['user_mail'] 'user_email' => 'example@domain.tld', //entspricht $field['subject'] 'subject' => 'Betreff', //entspricht $field['message'] 'message' => 'Ihre Nachricht' ); }
- Optional können Sie ein Array für versteckte Parameterfelder definieren: Array mit versteckten Parameterfeldern definieren
function getDialogXML() { //Ausgeschnitten: $fields-Array //Ausgeschnitten: $data-Array $hidden = array( 'user_id' => $userId, 'submit' => 1 ); }
- Legen Sie eine Instanz der Klasse base_dialog an: Klasse base_dialog instantiieren
function getDialogXML() { //Ausgeschnitten: $fields-Array //Ausgeschnitten: $data-Array //Ausgeschnitten: $hidden-Array $this->dialog = &new base_dialog( $this, $this->paramName, $fields, $data, $hidden ); }
- Laden Sie die Formularfelder mit den Daten, die der Nutzer zuvor eingegeben hat. Diese liegen immer dann vor, wenn der Nutzer das Formular abgesendet hat, einige Eingaben jedoch fehlerhaft waren: Daten von Nutezrn in Formularfelder laden
function getDialogXML() { //Ausgeschnitten: $fields-Array //Ausgeschnitten: $data-Array //Ausgeschnitten: $hidden-Array $this->dialog = &new base_dialog( $this, $this->paramName, $fields, $data, $hidden ); $this->dialog->loadParams(); }
- Geben Sie den Titel für den Dialog und den Absende-Button an: Titel für Button und Dialog eingeben
function getDialogXML() { //Ausgeschnitten: $fields-Array //Ausgeschnitten: $data-Array //Ausgeschnitten: $hidden-Array $this->dialog = &new base_dialog( $this, $this->paramName, $fields, $data, $hidden ); $this->dialog->loadParams(); $this->dialog->dialogTitle = 'Kontaktformular'; $this->dialog->buttonTitle = 'Absenden'; }
- Geben Sie das XML des Dialogs aus: XML des Dialogs ausgeben
function getDialogXML() { //Ausgeschnitten: $fields-Array //Ausgeschnitten: $data-Array //Ausgeschnitten: $hidden-Array $this->dialog = &new base_dialog( $this, $this->paramName, $fields, $data, $hidden); $this->dialog->loadParams(); $this->dialog->dialogTitle = 'Kontaktformular'; $this->dialog->buttonTitle = 'Absenden'; return $this->dialog->getDialogXML(); }