1 Erklärung
Die AbstractForm-Klasse ist die Mutterklasse aller Formulare, die ein Benutzer ausfüllen kann. Sämtliche Seiten, auf denen sich ein Formular befindet, sollten ihr Verhalten von der AbstractForm-Klasse erben. Wie auch eine Page-Datei muss sich die Datei mittels des files-PiP installiert werden. Alle Form-Dateien befinden sich im Ordner Endanwendung/lib/form/. Wichtig ist zu wissen, dass die AbstractForm-Klasse von der AbstractPage-Klasse erbt und somit alle dort vorhandenen Funktionen und Variablen ebenfalls verfügbar sind. Die AbstractForm-Klasse erweitert nur die Funktionalität einer Page-Datei.
2 Die AbstractForm auf GitHub
https://github.com/WoltLab/WCF…rm/AbstractForm.class.php
3 Verfügbare Funktionen
3.1 submit
Am Anfang der readData()-Funktion wird die Funktion submit() aufgerufen, sofern die Variable $_POST oder $_FILES != empty (nicht leer) ist. Die submit()-Funktion übernimmt die weitere Steuerung der Funktionsaufrufe. Die Funktion submit() wird i.d.R bei einer Vererbung der Datei nicht gesetzt, da i.d.R nur die nachfolgenden Funktionen von Interesse sind.
3.2 readFormParameters
Die Funktion readFormParameters() ist für das Auslesen der Daten aus dem Formular verantwortlich.
PHP
/**
* @inheritDoc
*/
public function readFormParameters() {
parent::readFormParameters();
if (isset($_POST['fieldName'])) $this->fieldName = StringUtil::trim($_POST['fieldName']);
}
3.3 validate
Die Funktion validate() dient zur Validierung der übernommen Daten aus dem Formular. Denkt immer daran, jede Eingabe ist "böse"!
PHP
/**
* @inheritDoc
*/
public function validate() {
parent::validate();
if (empty($this->fieldName)) {
throw new UserInputException('fieldName');
}
}
Display More
3.4 validateSecurityToken
Seit dem WSC 5.2 ist die Funktion validateSecurityToken() hinzugekommen. Diese wird automatisch am Ende der Funktion validate() aufgerufen und überprüft, sofern der Parameter $_POST['t'] gesendet wurde, ob das Security Token valide ist. Überschreibt man die Funktion validate(), sollte man selber daran denken, die Funktion validateSecurityToken() aufzurufen.
PHP
/**
* @inheritDoc
*/
public function validate() {
if (empty($this->fieldName)) {
throw new UserInputException('fieldName');
}
$this->validateSecurityToken();
}
Display More
3.5 save
Die Funktion save() dient zur Speicherung der aus dem Formular übernommenen Daten.
PHP
/**
* @inheritDoc
*/
public function save() {
parent::save();
// save object
$data = array(
'fieldName' => $this->fieldName
);
$data = array(
'data' => $data
);
$this->objectAction = new ObjectAction(array(), 'create', $data);
$resultValues = $this->objectAction->executeAction();
$this->saved();
}
Display More
3.6 saved
Die Funktion saved() stellt eine Besonderheit dar, da sie nicht automatisch ausgeführt wird. Der jeweilige Entwickler muss die Funktion saved() manuell innerhalb der save()-Funktion aufrufen. Die saved()-Funktion wird verwendet, um Drittentwicklern die Möglichkeit zu geben, sich nach der Speicherung in die eigene Datei mittels EventListener einzuklinken.