Veröffentlichungsdatum: 09. März 2023
Änderungsdatum: 22. März 2023
wForm addOption Formulareditor dynamisch Eingabefelder input select addElement
Sie können im Formulareditor über das Feld "Vor der Erstellung auszuführendes Skript" Eingabefelder dynamisch ergänzen oder abhängig von bestimmten Bedingungen zu initialisieren.
Die hier beschriebenen Beispiele sind stark vereinfachte Auszüge u.a. aus dem Anmeldeformular
des Kurse-Weblics® [IHR-INHALTS-PROJEKT]/kurse/anmeldung.php).
In dem Formular wurde ein Auswahlfeld Kurse eingefügt, das den Namen 'courses' hat.
Das select-Feld soll alle Kurse sowie deren Titel enthalten. In dem Feld "Vor der Erstellung auszuführendes Skript" werden über die Framework-Klasse wList alle Kurse ausgelesen.
Der Kurstitel und die Kurs-Id werden über dem Auswalfeld über wForm::addOption hinzugefügt.
$path = wRequest::getParameter('course'); /*Kurspfad*/
/*Es wurde kein Pfad angegeben*/
if($path == ''){
/*Auslesen der Kurse über wList*/
$listParameters['dir'] = wPathName::getDirFile(wPageCur::getPath()).'/daten';
$courses = wList::createListArray($listParameters);
/*Setzen der ersten leeren Option*/
$this->elements['courses']->addOption('', wTexts::getText('no_course_selected'));
/*Setzen der Optionen des select-Feldes über addOption*/
foreach($courses as $course){
$title = wDocumentData::getData($course, 'title');
$this->elements['courses']->addOption($course, $title);
}
}
Bei der Anmeldung soll ein hidden-Feld mit dem Kurspfad übergeben werden.
Das Feld wurde nicht über den Formulareditor eingefügt, sondern dynamisch über wForm::addElement erstellt. Damit es in dem Formular ausgegeben wird, muss es zusätzlich über die Funktion wElement::renderRow ausgegeben werden.
$path = wRequest::getParameter('course'); /*Kurspfad*/
/*Hinzufügen des Eingabefeldes*/
$this->addElement('hidden', 'coursePath', 'Kurspfad');
/*Setzen des Wertes*/
$this->elements['coursePath']->value = $path;
/*Ausgeben im Formular*/
print $this->elements['coursePath']->renderRow();
In dem Formular ist ein Feld (course-id) enthalten, das abhängig vom ausgewählten Kurspfad die KursId (id) auslesen soll.
Sie können den Wert eines Formular-Elementes über $this->elements['elementname']>value setzen
$path = wRequest::getParameter('course'); /*Kurspfad*/
/*Auslesen der Kurs-Daten*/
$dataObject = wDocumentData::getDataObjectAsArray($path, true);
/*Setzen des Kurs-Values*/
$this->elements['course-id']->value = $dataObject['id'];
Die Eingabefelder sollen dynamisch mit Platzhaltern aus den globalen Texten versehen werden.
Der Platzhalter ist ein Attribut, das dem Eingabefeld im HTML-Quelltext zugewiesen wird. Attribute können über $this->elements['elementName']->attributes['attribute'] gesetzt werden.
/*Auslesen des Textes*/
$text = wTexts::getText('placeholder_message');
/*Setzen des Kurs-Values*/
$this->elements['message']->attributes['placeholder'] = $text;