Verfasst: Do 30. Mär 2006, 14:12
Ja, schon sehr gut. Nun noch eine "Action" abfragen. Wenn Du im Template noch eine Zeile für MESSAGE ergänzt (siehe Code) kannst Du auch eine Fehlermeldung ausgeben. Unten findest Du noch einen Alternativen, flexiblen Template-Aufbau.
Das wäre es schon. Du könntest übrigens auch noch flexibler rangehen:
Das wäre das Template:
Dieser Teil:
würde dann so aussehen:
Ich würde übrigens für die Feldnamen englische Bezeichnungen mit Typkennung verwenden (e.g. txtTitle, ckbGender). Das müsste man dann bei FIELDTYPE und bei den jew. $_REQUEST berücksichtigen.
Gruß
HerrB
Code: Alles auswählen
<?php
cInclude('classes', 'class.frontend.users.php');
cInclude('classes', 'class.template.php');
$oFEUser = new FrontendUser;
$oFEUser->loadByPrimaryKey($auth->auth["uid"]); # Ist ja nur einer und der muss existieren, da nur in geschütztem Bereich sinnvoll
$sMessage = " ";
if ($_REQUEST["action"] == "save") {
# Daten überprüfen
if (!isset($_REQUEST["Titel"]) || strlen($_REQUEST["Titel"] > 50)) {
$sMessage = mi18n("Please specify a titel with less than or equal 50 characters");
} else if (...) {
} else if (!is_numeric($REQUEST["Postleitzahl"]) || strlen($REQUEST["Postleitzahl"]) > 5) {
$sMessage = mi18n("Please specify a correct zip code");
} else {
$oFEUser->setProperty("titel", "address", $_REQUEST["Titel"]);
...
$oFEUser->store(); # weiss gar nicht, ob das nötig ist
}
} else {
# Daten aus DB übernehmen und in REQUEST übertragen
$_REQUEST["Titel"] = $oFEUser->getProperty("titel", "address");
...
}
$oTpl = new Template;
$oTpl->reset();
#$oTpl->set('d', 'NAME', $oFEUser->get("username"));
$oTpl->set('d', 'TITEL', $_REQUEST["Titel"]);
$oTpl->set('d', 'VORNAME', $_REQUEST["Vorname"]);
#... usw. ... Dieses Vorgehen "rettet" die Eingaben im Fehlerfalle
$oTpl->next();
# Bin persönlich ein Fan von "Wenn Ausgabe, dann alles, kein Mischmasch". Das "\n" fügt einen Zeilenumbruch ein.
echo '<form method="post" action="front_content.php?idcatart='.$idcatart.'" name="frontend_save_user" id="frontend_save_user"><input type="hidden" name="action" value="save">'."\n";
echo $oTpl->generate('templates/feuser-edit.html');
echo '</form>'."\n";
?>
Das wäre das Template:
Code: Alles auswählen
<table width="" height="" cellpadding="3" cellspacing="0" border="0">
<tr>
<td class="textklein" colspan="2">{MESSAGE}</td>
</tr>
<!-- BEGIN:BLOCK -->
<tr>
<td class="textklein"><strong>{FIELDTITLE]</strong></td>
<td class="textklein"><input type="{FIELDTYPE}" name="{FIELDNAME}" id="{FIELDID}" value="{FIELDVALUE}"></td>
</tr>
<!-- END:BLOCK -->
</table>
Code: Alles auswählen
$oTpl = new Template;
$oTpl->reset();
#$oTpl->set('d', 'NAME', $oFEUser->get("username"));
$oTpl->set('d', 'TITEL', $_REQUEST["Titel"]);
$oTpl->set('d', 'VORNAME', $_REQUEST["Vorname"]);
#... usw. ... Dieses Vorgehen "rettet" die Eingaben im Fehlerfalle
$oTpl->next();
Code: Alles auswählen
$oTpl = new Template;
$oTpl->reset();
$oTpl->set('s', 'MESSAGE', $sMessage);
$oTpl->set('d', 'FIELDTITLE', mi18n("Titel"));
$oTpl->set('d', 'FIELDTYPE', 'text');
$oTpl->set('d', 'FIELDNAME', 'Titel');
$oTpl->set('d', 'FIELDID', 'titel');
$oTpl->set('d', 'FIELDVALUE', $_REQUEST["Titel"]);
$oTpl->next();
$oTpl->set('d', 'FIELDTITLE', mi18n("Vorname"));
$oTpl->set('d', 'FIELDTYPE', 'text');
$oTpl->set('d', 'FIELDNAME', 'Vorname');
$oTpl->set('d', 'FIELDID', 'vorname');
$oTpl->set('d', 'FIELDVALUE', $_REQUEST["Vorname"]);
$oTpl->next();
... usw. ...
Gruß
HerrB