Veröffentlichungsdatum: 11. Februar 2011
Änderungsdatum: 02. September 2020
formular seiten anlegen erstellen objekt object
Dieser Artikel beschreibt, wie Sie Seiten anlegen, die Ihren Inhalt aus Formulareingaben beziehen.
Sie wollen den Besuchern der Webseite die Möglichkeit bieten, eine eigene Profilseite, ein Kochrezept oder ähnliches anzulegen?
Der Formulargenerator bietet Ihnen die optimale Grundlage hierfür. Als Basis verwenden Sie ein Formular aus dem Beispielprojekt. Dies kann z.B. in der Ausgabe wie folgt aussehen:
Über die erweiterten Formulareinstellungen definieren Sie in der Box "Nach dem Absenden auszuführendes Script", dass die Formulardaten zusätzlich zur E-Mail die Inhalte einer neuen Datei befüllen. Dies ist im ersten Quelltext-Beispiel angeführt.
...
//Hier können Sie weitere Funktionen einfügen
// Objekt aus den Formulardaten erstellen
//Pfad der Vorlage
$pathObjectTemplate = '/de/personen/weblication/templates/documents/vorlage.php';
//Verzeichnis der erstellten Objekten
$dirNewObjects = '/de/personen/datas/';
//Vorlage einlesen
$templateStr = wReadWrite::readFile($pathObjectTemplate);
//Platzhalter mit Formulardaten füllen
$placeholders = $this->getFormData();
//print "<pre>";var_dump($placeholders);print"</pre>";
//Alle Platzhalter in der Vorlage ersetzen (Syntax: [!--PLATZHALTERNAME--])
foreach($placeholders as $key => $value){
$value = !is_array($value) ? $value : implode(', ',$value);
//$value = !is_array($value) ? $value : $key;
$templateStr = str_replace('[!--'.$key.'--]', htmlspecialchars($value), $templateStr);
}
//print $templateStr;
//Fertiges Objekt (Template mit ersetzten Platzhaltern) unter Zufallsnamen im Zielverzeichnis speichern
wReadWrite::writeFile($dirNewObjects.'/'.md5(time().rand(100000, 999999)).'.php', $templateStr);
//Verzeichnisindex löschen
wRepository::clearIndexDir($dirNewObjects);
...
Legen Sie, wie im Beispiel ersichtlich, eine Vorlage fest, die für eine neue Seite herangezogen werden soll. Diese Vorlage (z.B. vorlage.php) versehen Sie mit den entsprechenden Platzhaltern, die durch die Werte aus den Formularfeldern ersetzt werden. Die Platzhalter orientieren sich an der Benennung des Formularfeldes (name).
<?php $version="1.0"; $encoding="UTF-8"; ?> <?php include_once($_SERVER['DOCUMENT_ROOT'].'/[IHR-LAYOUT-PROJEKT]/wGlobal/scripts/pre.php'); ?> <?php exit; ?> <wd:document xmlns:wsl="http://weblication.de/5.0/wsl" xmlns:wd="http://weblication.de/5.0/wd" version="1.0" type="page.standard"> <wd:extension type="weblication" version="5.0" uid="a416e6e01f33c5aaa8f949f980b08dd7"> <wd:meta> <wd:title>[!--firstname--] [!--lastname--]</wd:title> <wd:description/> ... </wd:meta> <wd:status> <wd:online from="" status="off" to=""/> <wd:type value=""/> </wd:status> <wd:object name="Person" type="person"> <wd:data id="title" type="char.text">[!--title--]</wd:data> <wd:data id="firstname" type="char.default">[!--firstname--]</wd:data> <wd:data id="lastname" type="char.default">[!--lastname--]</wd:data> <wd:data id="street" type="char.default">[!--street--]</wd:data> <wd:data id="zip" type="char.default">[!--zip--]</wd:data> <wd:data id="town" type="char.default">[!--town--]</wd:data> <wd:data id="email" type="char.default">[!--email--]</wd:data> </wd:object> ...