Mam pewne problemy z formularzem formularzy Gravity Forms. Jest to formularz wielostronicowy i muszę wypełnić pole na stronie 2, używając wartości postów ze strony 1. Ale to nie działa. Oczywiście pole na stronie 2 jest skonfigurowane do "Pozwól na dynamiczne wypełnianie pola", a parametr pola jest ustawiony na "name". Oto mój kod:Wtyczka formularzy grawitacyjnych - dynamiczne wypełnianie pól formularza nie działa
add_filter('gform_field_value_name', 'name_population_function');
function name_population_function($value){
$name = $_POST['input_2'] . ' ' . (! empty($_POST['input_3']) ? ($_POST['input_3'] . ' ') : NULL) . $_POST['input_1'];
return $name;
}
Kiedy drukować wartość zmiennej $name
użyciu var_dump($name);
to rzeczywiście poprawna.
Jeśli zmienię $name
na $name = 'Last Middle First';
, wypełniam pole tak, jak powinno.
Dziękuję za pomoc.
EDIT: Dla celów testowych zmieniłem mojego kodu:
add_filter('gform_field_value_name', 'name_population_function');
function name_population_function($value){
$name = 'Test';
if (! empty($_POST['input_1']) && ! empty($_POST['input_2'])) {
$name = $_POST['input_2'] . ' ' . (! empty($_POST['input_3']) ? ($_POST['input_3'] . ' ') : NULL) . $_POST['input_1'];
//var_dump($name);
}
return $name;
}
Gdybym odkomentuj linię var_dump
wartość zmiennej $name
ponownie ustawiony prawidłowo, ale pole na stronie 2 jest oznakowane wartość Test
. Prawdopodobnie ten filtr jest również wywoływany na stronie 1, więc czy jest możliwe, że wtyczka buforuje tę wartość? Nie używam wtyczki do buforowania, więc nie wiem, dlaczego to nie działa.
Kiedy wyświetla się var dump, czy robisz to na drugiej stronie, czy na pierwszej stronie? –
Plik var_dump został umieszczony w funkcji nazwa_populacji_w_obiekcie w pliku function.php tuż przed 'return' i pierwsza strona została już wysłana. – user1832297
Przepraszamy za późne wysłanie, ale na wypadek, gdyby ktoś inny miał ten problem, stwierdziłem, że używanie wysyłania AJAX nie powoduje publikowania treści ze strony na stronę, ale pokazuje/ukrywa części formularza, aby nadać wygląd stronom. Wyłączenie wysyłania AJAX pozwoliło mi wypełnić pola z jednej strony na stronę późniejszą. Jeśli naprawdę potrzebujesz włączenia publikowania AJAX, być może będziesz musiał użyć haseł JavaScript, aby to zadziałało. – mj7