Registrierung Felder hinzufügen - Oxid 6 vs. 4.10

Bis oxid 4.10.x konnte man noch neue Felder (z.B. Checkboxen) in der Kunden-Registrierung so hinzufügen:

Feld in der Datenbank erstellen:
ALTER TABLEoxuserADDmeinfeldTINYINT( 1 ) NOT NULL DEFAULT '0';

Dann im Template /shop/application/views/flow/tpl/form/fieldset/user_billing.tpl
<input type="hidden" name="invadr[oxuser__meinfeld]" value='0'> <input class="form-control" type="checkbox" name="invadr[oxuser__meinfeld]" id="invadr[oxuser__meinfeld]" value='1' [{if isset( $invadr.oxuser__meinfeld ) }]checked[{/if }][{if $oxcmp_user->oxuser__meinfeld->value == 1}]checked[{/if}]>

Unter oxid 6 kann ich damit im Frontend Registrierungsformular zwar die (testhalber direkt in der DB eingetragenen) Werte aus der DB auslesen und anzeigen aber Änderungen werden nicht mehr (wie noch unter 4.10 möglich) gespeichert.

/tmp ist geleert & die Views sind “geupdated”.

Hat jmd eine Idee, was ich beim neuen oxid6 anders machen muss, damit die Werte in die Datenbank gespeichert werden?

Nachtrag: im Backend funktioniert es zwar, aber auch nicht als Checkbox, sondern nur als text (0 oder 1; zum testen) oder (sinnvoller) als select:
/source/Application/views/admin/tpl/user_main.tpl
<select name="editval[oxuser__meinfeld]" class="editinput" [{$readonly}]> <option value="0" [{if $edit->oxuser__meinfeld->value == 0}]SELECTED[{/if}]>nein</option> <option value="1" [{if $edit->oxuser__meinfeld->value == 1}]SELECTED[{/if}]>ja</option> </select>

Also die Werte werden vom Backend aus in der Datenbank gespeichert und korrekt ausgelesen.
Bleibt das Problem, dass die Werte aus dem Frontend nicht in der MySQL Datenbank abgelegt werden.

Im Post-Array wird bei “angecheckter” Checkbox korrekt (inkl. wert aus “hidden”) übergeben
… invadr%5Boxuser__meinfeld%5D=0&invadr%5Boxuser__meinfeld%5D=1 …

Im Frontend ein Select statt der Checkbox zu machen hilft auch nicht. Selbst als text wird das Value nicht in der DB gespeichert.

1 Like

Hallo,

ich habe das gleiche Problem. Gibt es da mittlerweile eine Lösung?

Danke.

1 Like

vendor/oxid-esale/oxidshop-ce/source/Application/Model/User/UserUpdatabaleFields.php

Hier das fehlende Feld eintragen, dann wird es auch in die Datenbank eingetragen.

2 Likes