Aktuelle Info zu Sicherheitsrisiken: In den aktuellen Versionen ab 4.1. sind keine Sicherheitsprobleme bekannt.
Backendfunktionen
Version: 4.0
Standardwerte
Für jedes Formularelement kann im Formularmanager über das Feld „Standardwert“ ein Text als Standardwert angegeben. Außerdem kann man den Wert einer Variablen als Standardwert eines Formularelementes übergeben. Dazu gibt man im Schnipsel vor dem Tag <ty:formmanager … /> die Wert für die Variable $GLOBALS['tyFormManager']['<FELDNAME>']['value'] an. Für FELDNAME wird dabei der Name des Tabellenfeldes angegeben bzw. wenn eingetragen der Wert für das „name-Attribut“.
Beispiel: $GLOBALS['tyFormManager']['firstname']['value']="Standardwert von firstname";
Auswahlfelder
Definition der Werte und Bezeichnungen
Um die Werte getrennt von den Bezeichnungen zu definieren (z.B. für Mehrsprachige Formular), kann man im Textfeld „Werte (pro Wert, eine Zeile)“ diese Werte folgendermaßen hinterlegen:
Bezeichnung|value=wert zweite Bezeichnung|value=wert_2 usw...
HTML in ein Formular integrieren
Ist es notwendig in ein Formular eigenen HTML-Code einzubinden kann dies jeweils vor bzw. nach einen jeden Formularelement geschehen. Für 'feldname' wird dabei der Name des Tabellenfeldes angegeben bzw. wenn eingetragen der Wert für das “name-Attribut“.
Beispiel: <?php $GLOBALS['tyFormManager']['feldname']['before'] = "<p>Ein Formularelement</p>"; $GLOBALS['tyFormManager']['feldname']['after'] = "<p>Ende des Elementes</p>"; ?> <ty:formmanager id="profile" />
Unique-Zuweisung
Mit dieser Zuweisung kann man ein bestimmtes Formularelement als eindeutiges Feld definieren. Sollte der Inhalt dieses Feldes schon in einem vorhandenem Datensatz in der Tabelle stehen, kann das Formular nicht abgeschickt werden. Der Unique-Text wird in diesem Fall im Formular angezeigt. Diese Zuweisung dient dazu, doppelte Datensätze zu vermeiden.
Datenausgabe innerhalb der Mailvorlage
Variante 1
Die Formulardaten können im Text mit {SPALTENNAME} eingetragen werden.
<ty:db table="<?php echo $_SESSION['formmanager']['insData']['table'];?>" id="<?php echo (int)$_SESSION['formmanager']['insData']['id'];?>" limit="1" > Name: {name} Dateidownload: <a href="http://<?php echo $_SERVER['HTTP_HOST'].$GLOBALS['mytyBasePath']; ?>/file.php?id={fileId}/>">Link</a>
Variante 2
Die Formulardaten können über das ty:db-Tag ausgelesen werden. Die Dokumentation für dieses Tag finden Sie unter http://tags.myty.de/.
Die ID des Datensatz ist in der Variable $_SESSION['formmanager']['insData']['id'] gespeichert.
Beispiel:
- für das Attribut col des Tags ty-db:colvalue muss der Spaltenname aus der Tabelle angegeben werden
<ty:db table="<?php echo $_SESSION['formmanager']['insData']['table'];?>" id="<?php echo (int)$_SESSION['formmanager']['insData']['id'];?>" limit="1" > Name: <ty-db:colvalue col="name"/> Dateidownload: <a href="http://<?php echo $_SERVER['HTTP_HOST'].$GLOBALS['mytyBasePath']; ?>/file.php?id=<ty-db:colvalue col="fileId"/>">Link</a> </ty:db>
Mail-Versand mit Dateianhang
Soll der Mail-Versand mit Dateianhang erfolgen muss ein eigenes Script erstellt und im /templates/-Ordner gespeichert werden.
Der Pfad muss beim Bearbeiten des Formulars unter Script-Anbindung - Datenspeicherung eingetragen werden.
Liegt das Script im Verzeichnis /httpdocs/templates/includes/form.php muss /includes/form.php eingetragen werden.
Beispiel für das Script
Hinweise:
- im Konstruktor der Klasse mytyMail muss die Variable $topic durch Das Topic der Mailvorlage ersetzt werden. Dieses finden Sie beim Bearbeiten der Mailvorlage in der URL. Ein Topic beginnt immer mit tyNavigationTopicID_
- Im Konstruktor der Klasse tyFileDB muss im Array $row als Schlüssel der Spaltenname für den Dateiupload verwendet
werden.
include_once($GLOBALS['mytyInstallPath'].'/modules/mail/class.mail.php'); require_once($GLOBALS['mytyInstallPath'].'/modules/filemanagerv2/inc.php'); require_once($GLOBALS['mytyInstallPath'].'/modules/filemanagerv2/classes/tyFileDB.class.php'); //Daten laden $row = array(); try { $res = tyDB::query('SELECT * FROM `'.$_SESSION['formmanager']['insData']['table'].'` WHERE `id` = '.(int)$_SESSION['formmanager']['insData']['id'].' LIMIT 1'); $row = tyDB::fetchAssoc($res); tyDB::free($res); } catch (Exception $e) { trigger_error($e->getMessage()); } //Datei laden $tyFileDB = new tyFileDB((int)$row['fileId']); $filePath = $tyFileDB->getRealPath(); //Mail initialisieren $mail = new mytyMail($topic,false); // Variablen in der Mailvorlage bereitstellen (können im Text mit {Variablenname} abgerufen werden) $mail->setVariables($row); $mail->load(true); // optionale Einstellungen $mail->setRecipient($rec_mail); $mail->setRecipientCC($rec_mail_cc); $mail->setSender($senderMail); $mail->setSenderName($sender_name); $mail->setSubject($subject); // Dateien als Anhang versenden $mail->setFiles(array($filePath)); $mail->send();
Weiterleiten
Nach erfolgreicher Dateneingabe kann an eine Weiterleitung erfolgen. Dabei kann der Pfad zu einen Script im templates-Ordner oder an eine Seite mit bestimmten Topic erfolgen.
Soll ein Formular mehrfach verwendet werden und an jeder Stelle an ein anderes Topics weitergeleitet werden kann man dies über das Attribut „nextTopic“ im formmanager-Tag erreichen.
Backendformular in DB-Modul einbinden
Ein im Formularmanager generiertes Formular für das Backend (Haken bei Backend muss gesetzt sein), kann im Datenbank-Manager als Formular für die Bearbeitung der einzelnen Datensätze verwendet werden, dazu muss folgender Link im Setup (Datentabelleneinstellungen) einer Datentabelle im Feld „Formulardatei“ eingefügt werden:
/tycon/modules/formmanager/form_preview.php?form=1
Dabei wird mit „form=1“ das festgelegte Formular aus den Formular-Manager angesprochen. Die ID kann man herausbekommen, in dem man sich im Formular-Manager eine Formularpreview anzeigen lässt und sich unter Eigenschaften den Dateipfad anschaut. Dort ist der Wert beschrieben.
Fehlermeldung
Die CSS-Klasse bei fehlerhaften Eingaben kann im Feld „class-Attribut bei Eingabefehler“ angegeben werden. Falls keine eigene CSS-Fehlerklasse angegeben wurde wird standardmäßig „tyFmError“ in dem DIV-Element verwendet, welches das Label und das Formularelement umschließt.
<div class="div-form-text tyFmError"> <div class="form-label"> <label for="formEl_4">Vorname</label> </div> <input type="text" class="form-text" id="formEl_4" name="firstName"/> </div>
Treten bei der Dateneingabe Fehler auf (z.B nicht ausgefülltes Pflichfeld)
Siteroles-Verwaltung
Mit dem Formularmanager kann ein Formular mit Zugriff auf die Siteroles erstellt werden. Folgende Typen von Formularelementen besitzen dafür nötige Einstellmöglichkeiten.
Formularelemente
- text - Mail-Adresse
- password
- password - Validierung
- einzelne Checkbox (Wenn diese nicht aktiviert ist werden die angegebenen Rollen entfernt (falls gesetzt))
- hidden text
Einstellungen
- Checkbox „aktivieren“ : das gewählte Formularelement wird für die Siteroles-Verwaltung aktiviert
- Mehrfachauswahl Rollen : Auswahl der Rollen (Mehrfachauswahl: Strg-Taste + Rechtsklick)
- Textfeld Attribute : pro Zeile kann ein Attribut getrennt durch „⇒“ mit dazugehörigen Wert angegeben werden
Beschreibung
Aktuell angemeldeten Nutzer bearbeiten
Die Rollen bzw. Attribute das aktuell angemeldeten Benutzer werden entsprechend den Einstellungen geändert, falls keine E-Mail aus dem Formularelemente text - Mail-Adresse übergeben wird bzw. kein entsprechendes Formularelement im Formular existiert.
Neuen Nutzer anlegen
Das Formular muss mindestend die Formularelemente text - Mail-Adresse und password bzw. password - Validierung enthalten. Die E-Mail-Adresse wird standardmäßig auf Gültigkeit geprüft und ob diese bereits im System registriert ist. Ist dies nicht der Fall wird ein neuer Nutzer mit den angegebenen Werten (E-Mail, Passwort, Rollen und Attributen) angelegt. Außerdem wird die Registrierungszeit (Attribut register_date, Wert als Timestamp) gespeichert. Ist die E-Mail in den Siteroles bereits registriert wird die definierte Fehlermeldung ausgegeben. Zu beachten ist, dass die Checkbox „Updatefeld“ nicht aktiviert ist. Im erstellten Datensatz wird im Feld user_id die ID des neu erstellten Nutzers gespeichert.
Einen Nutzer bearbeiten
Die Siteroles-Daten eines registrierten Nutzers können folgendermaßen verändert werden. Für das Formularelemente text - Mail-Adresse muss die Checkbox „Updatefeld“ aktiviert sein. Gibt der Nutzer in das E-Mail-Feld seine Mail-Adresse an wird geprüft ob diese im System registriert ist. Ist dies der Fall werden die Änderungen in den Siteroles entsprechend den Einstellungen geändert.
Dateiupload
Um ein Formular mit Dateiupload zu erzeugen wählt man für ein den Formulartyp „File“ .
Datei-Prüfung
MIME-Types
Um den Dateiupload auf bestimmte Dateitypen einzuschränken kann optional unter „MIME-Types“ ein oder mehrere (mit Komma getrennt) MIME-Types angegeben werden. Für Bilder wären dies „image/jpeg,image/pjpeg,image/jpg,image/pjpeg“. Die Angabe von z.B Image/* ist noch nicht möglich. Unter http://de.selfhtml.org/diverses/mimetypen.htm#uebersicht findet man eine Übersicht über alle möglichen MIME-Types.
Dateigröße
Es kann optional eine maximale Dateigröße in Byte angegeben werden.
Speicherung
Unter „Upload-Verzeichnis“ muss der Name des Ordners unter Media/Files angegeben werden, in dem die Dateien gespeichert werden sollen. Es können auch PHP-Variablen mit angegeben werden z.B.:
"User_".$_SESSION['subject_id']; Ist der Ordner nicht vorhanden wird er neu angelegt. Standardmäßig wird die Datei in den Dateimanager importiert und die ID des Datei-Eintrages gespeichert.
Eigenes Dateihandling
Soll ein eigenes Script für den Dateiupload verwendet werden, muss man am unteren Ende des Formularmanagers unter „Datei-Upload“ die checkbox aktivieren. Die Prüfung auf die maximale Dateigröße und den angegebenen MIME-Types wird trotzdem durchgeführt.
Datums-Feld
Für die Auswahl eines Datums gibt es das Formularelement „text - Datumsauswahl“ Bei diesem Element wird eine Textbox mit einen Button erzeugt. Bei Click auf den Button öffnet sich ein Kalender. Damit dies funktioniert muss folgende Styles und JavaScripts eingebunden werden und JavaScript aktiviert sein:
<link type="text/css" rel="stylesheet" href="/tycon/calendar/calendar-blue.css" /> <script type="text/javascript" src="/tycon/calendar/calendar.js"></script> <script type="text/javascript" src="/tycon/calendar/lang/calendar-de.js"></script> <script type="text/javascript" src="/tycon/calendar/calendar_start.js"></script>
Bekannte Bugs
- class=„desc-fieldset“ erscheint auch bei Feldern, denen man ein Klasse mit dem dem Wert: „display:none“ übergeben hat, die deshalb versteckt sind. Da die Fieldset-Beschreibung eine Standardklasse (desc-fieldset) nutzt, kann sie nicht auf „display:none“ gesetzt werden, alle anderen Fieldset-Beschreibungen würden sonst auch unsichtbar werden. Abhilfe schaft der Trick > Formularfeld einem bestehenden Fieldset zuordnen, so erzeugt es kein eigenes Fieldset. Es muss deshalb auch nicht versteckt werden.
- Formularfelder ohne Fieldsetzuweisung erscheinen immer am Anfang des Formulars
- Formularfelder können nur verschoben werden, in dem man die Feldeinstellungen in der Datenbank (Icon:Bleistift) ändern und die Positionierung tauscht.
- Richeditfelder erhalten immer eine ID, die dem Namen des Felds in der Datenbank entspricht. Ist diese ID bereits auf der Webseite für ein anderes Element vorhanden, wird das Richeditfeld nicht gespeichert.
letzte Änderung: 07.09.2011
Stellen Sie eine Frage
offene Fragen
Zu diesem Beitrag existieren keine offenen Fragen.
Alle Beiträge zum Thema
- Backendfunktionen
- Ein Formular in eine Seite einbinden
- Formularmanager Widget-Plugins
- Frontendfunktionen
- Mitgelieferte Plugins in aktuellen myty Versionen
- Ein Formular kopieren / duplizieren
- Formular mit Datei-Upload
- Formular mit E-Mail-Versand
- Formulardaten in der E-Mail (Mailvorlage) ausgeben
- Formulare zum Bearbeiten von Daten
- Zugriff auf die Daten eines Formulars

Kommentieren