FROM CACHE - de_header

Wert von einem Formularfeld in Metafields speichern

SchweizerKaffee
Besucher
3 0 0

Hallo zusammen

Es gibt unzählig viele Hilfen, wie man Metafelder anlegt, Werte dort hinzufügt und auf der Page anzeigen kann.

Doch ich versuche genau das Gegenteil:

Von einem zusätzlichen Formularfeld aus in "customers/register.liquid" den Value in das entsprechende Metafield speichern.

 

Das Metfield ist das folgende:

customer.metafields.custom.gender

--> definiert als einzeiliger Text / ein Wert, keine weiteren Definitionen

 

So habe ich das Feld zusätzlich hinzugefügt:

 

<div class="field" type="text">

<select id="RegisterForm-gender" name="customer[custom][gender]">
<option value="" selected disabled hidden>&#9660; Anrede</option>
<option value="Herr">Herr</option>
<option value="Frau">Frau</option>
</select>
</div>

 

Gemäss Entwicklerkonsole wird z.B. der Value "Herr" übgeben, aber es speichert nichts in das Metafeld hinein.

Ich habe auch schon diverse andere name="" Definitionen versucht: z.B. "customer[metafields][custom][gender]"

Aber es speichert gar nichts.

Hat irgendwer eine Idee, wie man das hinkriegt?

 

Gruss

Christoph

3 ANTWORTEN 3

Gabe
Shopify Staff
15726 2494 3722

Hi Christoph! @SchweizerKaffee 

 

Ggf. können unsere Experten @Finer @nd @Klondev hier weiterhelfen.

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog

SchweizerKaffee
Besucher
3 0 0

@Finer @nd @Rankist : hättet ihr eine Idee?

Gabe
Shopify Staff
15726 2494 3722

@SchweizerKaffee 

 

Ich sehe den Wert und die Use-Cases in was du versuchst zu erreichen und werde meine Ideen dazu hier auch mit in den Ring werfen da das eine wertvolle Sache ist für viele unserer Mitglieder.

 

Ein Kunde könnte beispielsweise die eigenen Metadaten über Liquid-Formulare ändern wenn man z. B. möchte, dass der Kunde sein Geschlecht oder Alter in ein Formular-Eingabefeld eingibt und das Alters-Metafeld für diesen Kunden beim Absenden des Formulars aktualisieren. Man kann versuchen das input-Tag mit dem Typ 'hidden' zu verwenden, ähnlich wie hier <input id="age" type="text" name="customer[note][Age]">. Aber wie kann man einen bestimmten Metafeldwert aktualisieren? So etwas wie name="kunde[metafelder][namespace.key]?

 

Hast du vielleicht in diesem Partner Blog Artikel was dazu finden können der in die Themen Metafeldern, dynamische Quellen, Kodierung und mehr eingeht?

 

Im Grunde scheint es der Fall zu sein, dass es derzeit **noch** nicht möglich ist, mit der Storefront-API ein Metafeld im Adminbereich zu erstellen, zu löschen oder einen Wert darin zu setzen, sprich, man kann sie derzeit nur auf der Website statisch aufrufen/anzeigen. Vielleicht gehen diese Operationen stattdessen auf metafields wenn man den GraphQL Admin API oder REST Admin API verwendet?

 

Hier kann man ggf. einen App Proxy verwenden, um Formulardaten an einen von dir kontrollierten Endpunkt zu übermitteln, wo du die Admin-API verwendest, um die Metafelder zum Kunden-Metafelfeld im Admin hinzuzufügen. Sobald die Metafelder in der Kundenressource definiert sind, kann jede Seite mit Liquid auf die Metafelder des aktuell angemeldeten Kunden mit dem Code "customer.metafields.namespace.fieldname" zugreifen.

 

Nur so eine Idee und ggf. haben unsere Experten auch ein paar Tipps dazu! 😉

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog