2016-07-15 15 views
0

Ich habe eine mehrseitige Gravitationsform, die eine Reihe von Fragen über eine Optionsschaltfläche präsentiert.Wie fügt man Gravity Forms Felder in gform_pre_render() hinzu

Which of the following would you choose? 

    o Choice #1 
    o Choice #2 

    +----------+ +----------+ 
    | BACK | | NEXT | 
    +----------+ +----------+ 

Jeder Fragen- und Auswahlsatz wird mithilfe benutzerdefinierter Felder (erweiterte benutzerdefinierte Felder) konfiguriert. Ich bin in der Lage, alle diese Fragen und Entscheidungen einfach aus dem gform_pre_render Filter zu durchlaufen und jetzt möchte ich die benötigten Gravity Form Felder im laufenden Betrieb erstellen.

Insbesondere wird es für jede Frage ein Seitenfeld und ein Optionsfeld geben.

Ich habe wirklich fast alle Suchkriterien ausprobiert, die mir bei Google einfallen, und habe die Dokumentation der Gravity-Hilfe durchforstet, aber ich sehe kein Beispiel für das dynamische Hinzufügen von Feldern.

Kann jemand ein Licht für mich scheinen? : P

Antwort

1

Sie können ein Feld mit GFFields::create() erstellen. Hier ist ein einfaches Beispiel (vorausgesetzt, dass Sie innerhalb des gform_pre_render Filter.

$props = array( 
    'id' => 123, 
    'label' => 'My Field Label', 
    'type' => 'text' 
); 
$field = GF_Fields::create($props); 
array_push($form['fields'], $field); 

Es gibt wahrscheinlich mehr Eigenschaften müssen Sie angeben, das Feld zum Laufen zu bringen. Ich würde empfehlen, print_r() auf einem vorhandenes Feld mit einer Idee zu bekommen, von alle verfügbaren Eigenschaften Sie sollten auch sicherstellen, dass Ihre Feld-IDs eindeutig sind

Schließlich, um Daten aus diesen vorhandenen Feldern zu erfassen, möchten Sie wahrscheinlich auch Ihre dynamischen Felder über den Filter gform_pre_validation hinzufügen

+0

Ich bekomme einen fatalen Fehler oder: Klasse GFFields nicht gefunden. – rwkiii

+0

Sieht aus, als könnte es "GF_Fields" anstelle von "GFFields" sein? – rwkiii

+0

Es scheint auch, dass 'GF_Fields :: create()' das Feld zum Formular hinzufügt. Wenn ich ein 'array_push()' mache, werden dem Formular 2 Felder hinzugefügt. – rwkiii