Liebe Community,
eigentlich hatte ich ein Problem und wollte nach Stunden und Tagen gerade die Community fragen, fand aber beim Schreiben noch einen Syntaxfehler im Input-Tag, an dem es wohl (u.A.?) lag, dass etwas nicht funktionierte - so kann es manchmal gehen :-(
Da ich aber bei meiner Recherche wenig zum Thema fand, lasse ich meinen Beitrag mal als Mini-Tutorial hier stehen - evtl. hilft es bald jemanden weiter.
Meine Aufgabe war es, dass Registrierungsformular um ein Checkbox-Feld zu erweitern. Dazu fand ich auch zwei Links, die sich damit befassen:
http://wiki.oxidforge.org/Tutorials/...o_registration
http://forum.oxid-esales.com/showthread.php?t=9015
Entsprechend der Anleitung fügte ich im Template das Feld hinzu. Datei form/register.tpl:
Datei form/fieldset/user_myadditionalfields.tpl:
In die DB-Tabelle oxuser erstellte ich entsprechend ein Feld:
Beim Registrierungsvorgang wird nun der Wert des Feldes in der Datenbank gespeichert.
(Hier lag mein Problem, wusste mir aber nicht so recht zu helfen, da ich mich im MVC von Oxid und der Klassenhierarchie und Philosophie nicht auskenne - bin neu mit OXID unterwegs. Eine Debug-Ausgabe in den Controllern/Models gelang mir leider nicht (Headers allready sent...). [{ debug }] im Frontend ging auch nicht gut wegen dem Redirect nach der Registrierung. Ohne Redirect erhielt ich eh keinen Debug-Wert für $invadr - egal erstmal...)
Nun sollte es noch so sein, dass die Checkbox auch im Backend auftaucht. Dazu musste ich nur die passende Template-Datei finden und das Formular erweitern (eigentlich so easy wie im Frontend):
Datei admin/tpl/user_main.tpl:
Das war es erstmal vom Mini-Tutorial.
Fragen am Rande:
Wo finde ich etwas über das Definieren von Datenbank-Felder und z.B. die Validierung der Felder in Formularen? Woher weiß das Model, welche Properties (aus der DB) es gibt, wo findet das Mapping der DB-Felder auf das Model statt? Wo wird im register-Controller der User erstellt (in der Parent-Class User wohl auch nicht)?
Über Links, die mich dem Thema näher bringen wäre ich dankbar.
eigentlich hatte ich ein Problem und wollte nach Stunden und Tagen gerade die Community fragen, fand aber beim Schreiben noch einen Syntaxfehler im Input-Tag, an dem es wohl (u.A.?) lag, dass etwas nicht funktionierte - so kann es manchmal gehen :-(
Da ich aber bei meiner Recherche wenig zum Thema fand, lasse ich meinen Beitrag mal als Mini-Tutorial hier stehen - evtl. hilft es bald jemanden weiter.
Meine Aufgabe war es, dass Registrierungsformular um ein Checkbox-Feld zu erweitern. Dazu fand ich auch zwei Links, die sich damit befassen:
http://wiki.oxidforge.org/Tutorials/...o_registration
http://forum.oxid-esales.com/showthread.php?t=9015
Entsprechend der Anleitung fügte ich im Template das Feld hinzu. Datei form/register.tpl:
HTML Code:
<form class="js-oxValidate" action="[{ $oViewConf->getSslSelfLink() }]" name="order" method="post">
[...]
<h3 class="blockHead">My Headline</h3>
<ul class="form">[{ include file="form/fieldset/user_myadditionalfields.tpl" }]</ul>
[...]
</form>
HTML Code:
<li>
<label for="awpartner">Partner werden?</label>
<input type="hidden" name="invadr[oxuser__oxawpartner]" value="0" />
<input id="awpartner" type="checkbox" class="checkbox" name="invadr[oxuser__oxawpartner]" value="1" [{if $invadr.oxuser__oxawpartner }]checked[{/if}]>
<span class="inputNote">Ich möchte Partner werden.</span>
</li>
PHP Code:
OXAWPARTNER tinyint(1) DEFAULT '0' NOT NULL
(Hier lag mein Problem, wusste mir aber nicht so recht zu helfen, da ich mich im MVC von Oxid und der Klassenhierarchie und Philosophie nicht auskenne - bin neu mit OXID unterwegs. Eine Debug-Ausgabe in den Controllern/Models gelang mir leider nicht (Headers allready sent...). [{ debug }] im Frontend ging auch nicht gut wegen dem Redirect nach der Registrierung. Ohne Redirect erhielt ich eh keinen Debug-Wert für $invadr - egal erstmal...)
Nun sollte es noch so sein, dass die Checkbox auch im Backend auftaucht. Dazu musste ich nur die passende Template-Datei finden und das Formular erweitern (eigentlich so easy wie im Frontend):
Datei admin/tpl/user_main.tpl:
HTML Code:
<form name="myedit" id="myedit" action="[{ $oViewConf->getSelfLink() }]" method="post" onSubmit="return chkInsert()">
[...]
<tr>
<td class="edittext" width="90">Partner</td>
<td class="edittext">
<input class="edittext" type="checkbox" name="editval[oxuser__oxawpartner]" value='1' [{if $edit->oxuser__oxawpartner->value == 1}]checked[{/if}] [{ $readonly }]>
</td>
</tr>
Das war es erstmal vom Mini-Tutorial.
Fragen am Rande:
Wo finde ich etwas über das Definieren von Datenbank-Felder und z.B. die Validierung der Felder in Formularen? Woher weiß das Model, welche Properties (aus der DB) es gibt, wo findet das Mapping der DB-Felder auf das Model statt? Wo wird im register-Controller der User erstellt (in der Parent-Class User wohl auch nicht)?
Über Links, die mich dem Thema näher bringen wäre ich dankbar.