W jednym z moich formularzy próbuję ustawić $form_state['redirect']
tak, aby formularz trafił do tego miejsca docelowego po kliknięciu przez użytkownika jednego z przycisków akcji.
Jeśli sprawdzę $form_state['redirect']
zarówno przed, jak i po dodaniu przekierowania, ma on wartość NULL przed, a następnie zawiera odpowiednią tablicę. Oto jak konfiguruję przekierowanie:
$form_state['redirect'] = array(
'my/custom/path/' . $nid,
array('query' => drupal_get_destination()),
);
Chcę zachować miejsce docelowe z formularza wyświetlanego przez użytkownika do następnej ścieżki (dlatego dzwonię drupal_get_destination()
, która zwraca tablicę z 'destination' => 'some/path/here'
wewnątrz.
Wygląda na to, że ponieważ w ścieżce bieżącego formularza znajduje się już miejsce docelowe, formularz przekierowuje do tego miejsca docelowego bez względu na to, co wstawiłem w module obsługi przesyłania formularza (patrz powyższy kod). Próbowałem nawet użyć drupal_goto () i to też nie przekierowało użytkownika.
źródło
Dzięki za to, ale z jakiegoś powodu to nie działało, kiedy próbowałem. Wystąpił błąd krytyczny - dane wysłane w powyższej przykładowej odpowiedzi nie spełniają wymagań
drupal_goto()
Może dlatego, że ta odpowiedź jest dość stara, ale zamiast tego mogłem ją uruchomić z tym:
Wiem, że to narusza tę notatkę:
Ale w tym przypadku zdecydowanie chcesz zastąpić zmienną. Nie ustawiałbyś tej wartości, chyba że chciałbyś zignorować ustawione wartości innego modułu. Myślę też, że musisz to zrobić ze względu na sposób
drupal_goto()
działania z parametrem zapytania. Może to być również powód, dla którego oryginalna odpowiedź powodowała fatalne błędy w mojej witrynie.źródło
$form_state['redirect']
lub otrzymać WSOD z konkurującymi przekierowaniami.ustaw formularz #action
źródło
drupal_goto()
whook_node_insert()
będzie przykręcić rzeczy (bodrupal_goto()
rozmowydrupal_exit()
zapobiegając nowy węzeł z zapisywane).