Hi, ich möchte gern ein Freitextfeld in der Registrierung verwenden. habe dazu folgendes Template angelegt frontend/register/billing_fieldset.tpl [code] {* Registrierseite des Mastertemplates erben *} {extends file=’…/_default/frontend/register/billing_fieldset.tpl’} {* Neues Freitextfeld hinzufügen *} {block name=‚frontend_register_billing_fieldset_input_ustid‘ append}
{se name=„RegisterText1“}Freitextfeld:{/se}
{/block} [/code] Das Feld wird im Frontend auch angezeigt und wird auch in $form_data.text1 übergeben. Es wird aber nicht in die Datenbank eingetragen. Wo ist mein Denkfehler? Das sollte doch eigentlich so funktionieren oder? vielen Dank und viele Grüße.
Hallo Jan, vielen Dank. Ich möchte das aber in ein eigenes Plugin integrieren da ich hier noch ein Ajax-Upload einbauen muss. Der Dateiname aus dem Upload soll dann in das Freitextfeld geschrieben und beim Absenden des Formulars mit übergeben werden. ich habe in shopware/engine/Shopware/Controllers/Frontend/Register.php auch keine Verarbeitung der Freitextfelder entdecken können. Ausser bei der Validierung auf required. Ich könnte den Wert aus dem Freitextfeld auch direkt in die Datenbank schreiben aber hier weiß ich nicht an welcher stelle ich die UserId bzw. billingId zurück bekomme. Gruß, H.
ok, das richtige Event habe ich jetzt gefunden: Shopware_Modules_Admin_SaveRegisterBilling_Return aber wie komme ich da an die userDaten ran? vielen Dank.
ok, wenn ich bei Shopware_Controllers_Frontend_Register_validateBilling_FilterRules die rules manipuliere, wird das freitextfeld eingetragen… public function onPostDispatchRegisterValidateBilling(Enlight\_Event\_EventArgs $args){ $rules = $args-\>getReturn(); $rules['text1']['required']=1; return $rules; } in sAdmin::sValidateStep2 werden die Formulardaten in die Session geschrieben. Leider nur die, die auch in $rules definiert wurden: foreach ($rules as $ruleKey =\> $ruleValue){ $this-\>sSYSTEM-\>\_SESSION["sRegister"]["billing"][$ruleKey] = $p[$ruleKey]; }
Da ich mich eben auch stundenlang mit einem zusätzlichen Feld bei der Registierung geärgert habe, und diesen Thread 200x durchgelesen habe möchte ich meine Erkenntnisse dazu teilen. Das Problem ist die Benennung des Formularfeldes <input name="register[billing][text1]" type="text" rel="required" id="register_billing_text1" value="{$form_data.text1}" class="text {if $error_flags.text1}instyle_error{/if}"> Intern werden die Felder text1 - text6 aus s_user_billingaddress_attributes von Shopware nämlich als Teil von „Personal“ behandelt. Ändert man <input name="register[billing][text1]" .... auf wird das neue feld in s_user_billingaddress_attributes.text1 gespeichert. und ganze ohne plugin. will man sein neues allerdings als pflichtfeld gehts nicht plugin:>subscribeEvent( 'Shopware\_Controllers\_Frontend\_Register\_validatePersonal\_FilterRules', 'ShopwareControllersFrontendRegisterValidatePersonalFilterRules' ); public function ShopwareControllersFrontendRegisterValidatePersonalFilterRules(Enlight\_Event\_EventArgs $args){ $rules = $args-\>getReturn(); $rules['text1']['required']=1; return $rules; } Ich finde das Shopware sehr undurchsichtig gelöst. Genauso komisch wie customernumber, brithday, ustid in der s_user_billingaddress Tabelle findet. Beste Grüße Thomas
[quote=„xlab“] Das Problem ist die Benennung des Formularfeldes [/quote] sehr interessant. Ich weiß jetzt gar nicht mehr wie ich das damals gelöst habe aber danke für deine Antwort. Für’s nächste mal weiß ich dann bescheid…