✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Komplett guide: Hur man dynamiskt fyller fält i gravitationsformer

13

Att bygga enkla eller komplexa formulär i Gravity Forms är enkelt och snabbt. En av funktionerna Gravity Forms erbjuder är att du kan villkorligt förvälja eller förfylla i fält i ett formulär. Detta är användbart när du har samma formulär på flera kontaktsidor för varje avdelning och vill förvälja motsvarande avdelning i formuläret. Eller så bäddar du in ett förfrågningsformulär på produkt- eller tjänstesidor och vill automatiskt fylla i information om den aktuella produkten eller tjänsten i varje inlämning.

Du kan dynamiskt förvälja eller förfyll i fält på flera sätt, och du kan också dynamiskt ersätta de möjliga valen i en rullgardinsmeny, alternativknapp eller kryssrutagrupp. Fältet du dynamiskt fyller i kan vara ett synligt fält som användaren kan redigera, eller så kan det dirigeras till ett dolt fält så att läsaren av formulärinlämningarna får viktig information.

De fyra sätten att dynamiskt fylla i fält

I den här guiden kommer vi att titta på fyra sätt att dynamiskt fylla i fält i ett Gravity Forms-formulär. Tre av dem kan du göra utan att röra någon kod! Men om du dynamiskt vill ändra de möjliga valen i en markering, alternativknappsgrupp eller kryssrutor måste du skriva lite PHP-kod. Vi ska titta på hur man gör det i slutet.

Du kan fylla i fält dynamiskt genom att:

  • Lägger till extra information i URL:en.
  • Ge extra information till inbäddningskortkoden för Gravity Forms.
  • Definiera extra information till Gravity Forms-blocket (om du använder WordPress med Gutenberg).
  • Använder filter med PHP-kod.

Men först måste vi gå igenom hur man aktiverar dynamisk population av ett fält.

Aktivera ett fält för att tillåta dynamisk population

Det första steget oavsett vilken metod du använder för att fylla i fältet, är att aktivera detta på själva fältet.

I formulärredigering, expandera fältet och på fliken "Avancerat" hittar du en kryssruta "Tillåt att fält fylls i dynamiskt". Markera detta och en ny textinmatning visas som låter dig definiera ditt parameternamn. Detta kan vara allt du vill, men ska vara unikt och utan mellanslag.

Komplett guide: Hur man dynamiskt fyller fält i gravitationsformer

Spara formuläret så är det klart för dig att bestämma vilken metod du vill använda för att fylla i det.

Fyller i dynamiskt från URL-parametrar

Du kan lägga till GET-parametrar till länken till sidan som bäddar in formuläret, till exempel om länken finns i en annan inläggstext eller är en anpassad länk i WordPress-menyer.

Lägg helt enkelt till frågevariabler i nyckelvärdespar, med parameternamn som nyckel och deras värde som vad du än vill att deras värde ska vara. Det är möjligt att lägga till flera nyckelvärdespar om du vill fylla i flera fält i formuläret, separera helt enkelt varje par med "&".

Förutsatt att ditt formulär finns på denna sida: " https://example.com/contact-me/", och ditt parameternamn är awp_populate_meatt du kan fylla i fältet genom att använda denna URL: " https://example.com/contact-me/?awp_populate_me=Hello".

Tänk på att webbadresser måste vara korrekt kodade. Du kan till exempel inte bara lägga till mellanslag eller specialtecken direkt som parametervärde. Tillhandahåller "Hej världen!" eftersom värdet skulle vara " Hello%20world%21". Det finns gott om onlineverktyg för att koda webbadresser åt dig om du vill gå den här vägen.

Fyller dynamiskt från kortkod

Alla formulär infogas via en kortkod. Du kan dynamiskt fylla i fält direkt i denna kortkod. Den här metoden kan vara användbar om du använder samma formulär i flera inlägg (t.ex. registrerar deltagare för flera olika evenemang eller kurser), och du behöver tillhandahålla något unikt för att veta vilket evenemang eller kurs formuläret kom från…

Normalt när du bäddar in ett formulär resulterar det i en kortkod som ser ut ungefär så här:[gravityforms id="1" title="Contact us"]

Redigera kortkoden och lägg till nyckeluppsättningen field_valuesi en sträng som innehåller ditt parameternamn är lika med önskat värde. Till exempel att ställa in en parameter awp_populate_metill ‘Hello World’ görs så här:

[gravityforms id="1" title="Contact us" field_values="awp_populate_me=Hello World"]

Om du behöver fylla i flera fält lägg till ett "&" emellan, så här:

[gravityforms id="1" title="Contact us" field_values="awp_populate_me=Hello World&awp_another_field=Hello to you too"]

Befolkar dynamiskt från Block i Gutenberg

Om du har GravityForms version 2.4.13+ och WordPress med Gutenberg (WordPress 5+) kan du lägga till Gravity Forms som ett block. Inom detta block har du en metod för att fylla i fält också.

Lägg till blocket "Formulär" i Gutenberg och välj ditt formulär. Blocket bör ändras till en formulärförhandsgranskning. Expandera Avancerat i den högra sidopanelen och du hittar ett textområde märkt "Fältvärden". I det här textområdet kan du skriva in dina parameternamn och värden, precis som du skulle skriva i kortkoden. T.ex. " awp_populate_me=Hello World!"

Komplett guide: Hur man dynamiskt fyller fält i gravitationsformer

Fyller dynamiskt från kod

Och slutligen, om du hellre vill fylla i dina fält med PHP-kod, finns det filter för detta. Du kan placera den här koden i ditt temas functions.php.

Hur du kodar detta beror på vilken typ av fält det är; som du förmodligen kan gissa att fylla (ersätter alla val) i en markering, måste kryssrutor eller radiogrupp hanteras annorlunda än att bara fylla i ett enda textfält.

Fyller i ett enskilt värdefält

Att fylla i ett fält som har ett enda värde (detta gäller textfält, textområde, e-postfält, telefonfält och liknande) görs enkelt genom att filtrera gform_field_value_<parameter name>. I vårt exempel:

add_filter('gform_field_value_awp_populate_me', function($value) { return 'Hello world!'; });

Du kan också använda detta filter för att förvälja ett alternativ i ett flervärdesfält, t.ex. välj (rullgardinsmeny), alternativknappar eller kryssrutor.

Fylla i ett urval eller alternativknappar

Om du bara är intresserad av att förvälja ett alternativ, följ guiden ovan för att fylla i ett enda värdefält. Denna kod är avsedd för att anpassa eller ersätta de möjliga val du får i fältet.

Gravity Forms formrenderingsfilter

Filtret gform_pre_rendertillåter oss att ändra formuläret precis innan det visas. Men när vi gör ändringar här bör vi se till att våra ändringar tillämpas i alla fall; så vi måste också haka på gform_admin_pre_render(motsvarande pre_render-filter men påverkar admin/formulärredigering), gform_pre_validation(ansvarig för att validera formuläret före inlämning) och gform_pre_submission_filter(filtrera efter validering men innan inmatningen sparas). Oroa dig inte, vi använder en och samma funktion för alla dessa filter.

Du kan filtrera dessa direkt, eller så kan du ange ett understreck och formulär-ID efter filternamnet, endast för att filtrera ett specifikt formulär. Till exempel gform_pre_render_1skulle endast köras på ett formulär med formulär-ID 1.

Som argument till alla dessa filter får du formulärobjektet, där du kan få tag på formulär-ID (alternativ metod för att lägga till formulär-ID vid filtret), och alla dess fält. Formulärfälten är en rad Fieldobjekt – men allt vi behöver oroa oss för är att ersätta det korrekta fältets choicesegenskap.

Ändra valen

Vilken typ av data du vill ersätta val med är helt upp till dig, men ett fälts choicesegenskap behöver en array som har elementen ‘text’ och ‘value’. Till exempel ['text' => 'Hello World!', 'value' => '1', 'text' => 'Second choice', 'value' => '2'].

Ovanstående kod filtrerar endast formulär-ID 1. Den börjar med att loopa genom formulärets fält. Det är viktigt att notera "&" före elementet i slingan, som skickar det genom referens. Det betyder att om vi gör ändringar i $field, så tillämpas och sparas den direkt på $form['fields'].

Det andra steget är att rikta in fältet som har parameternamnet vi vill rikta in oss på. För varje fält är detta inputNameegenskapen. Du kan använda andra sätt att rikta in dig på fält, t.ex. dess ID (id) eller CSS-klass (cssClass). När vi har hittat vårt fält måste vi generera ersättningsarrayen till val och ställa $field->choicesin på detta. I exemplet ovan frågar jag alla sidor och går igenom dem för att skapa en korrekt formaterad array.

Glöm inte att returnera den $formi slutet, eftersom detta är ett filter.

Det är värt att nämna att detta filter även gäller för redigeringsformulär (eftersom vi filtrerar gform_admin_pre_render). Men kom ihåg att du inte längre kan manipulera valen i formulärredigering – det kommer bara inte att spara dina ändringar eftersom den här koden alltid kommer att åsidosätta den.

Fyller i kryssrutor

Jag ska nämna det igen; om du bara är intresserad av att förvälja en kryssruta, följ guiden ovan för att fylla i ett enskilt värdefält. När det gäller att ersätta alla val i kryssrutor är processen mycket lik att fylla i ett val eller alternativknappar ovan, men med några mindre skillnader. Jag rekommenderar att först titta igenom förklaringen ovan för val och radioknappar.

Du använder samma filter och startprocessen är densamma; du går igenom formulärets fält och hittar den du vill ha. Men med kryssrutor måste du ersätta två egenskaper i fältobjektet; choicesoch inputs. Egenskapen choicesförväntar sig samma array som i en val eller alternativknappar.

Egenskapen inputförväntar sig en array med elementen ‘ label‘ och ‘ id‘. Den labelär självförklarande och bör vara identisk med textvalen. Elementet idmåste följa Gravity Forms ID-regler; sammanlänkning av fält-ID, en punkt och val-ID, som börjar med 1 (t.ex. om fält-ID är 2 och val-ID är 3, är det korrekta id" 2.3").

Eftersom val-ID måste börja på 1, startar vi en räknarvariabel före loopen och lägger till 1 för varje element i loopen, och använder det tillsammans med fält-ID och en punkt som idi inputsarray.

När vi har våra två arrayer sätter vi dem på fältets choicesoch inputsegenskaperna och returnerar den modifierade formen.

Inspelningskälla: awhitepixel.com

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer