Używając hook_form_alter
, jak mogę przekierować użytkownika na niestandardową stronę po utworzeniu lub edycji węzła zamiast węzła, który został utworzony lub edytowany?
Obecny kod hook_form_alter()
jest następujący:
function custom_form_alter(&$form, &$form_state, $form_id) {
if ($form['#id'] == 'custom-node-form') {
$form['actions']['submit']['#value'] = t('Add Entry');
$form['field_custom_email']['und'][0]['value']['#element_validate'] = array('_custom_form_validate_email');
}
}
7
forms
redirection
Citricguy
źródło
źródło
Odpowiedzi:
Kod przekierowuje formularz niezależnie od przycisku klikniętego w celu przesłania formularza. Jeśli chcesz przekierować formularz tylko po kliknięciu określonego przycisku przesyłania, powinieneś użyć następującego kodu.
hook_form_FORM_ID_alter()
tak naprawdę nie potrzebuje go, ponieważ jest wywoływany dla konkretnego formularza, podczas gdy dwa pozostałe haki są wywoływane dla więcej niż jednego formularza.$form['#node']
obiekt węzła dla edytowanego obiektu; „niestandardowy” to krótki identyfikator typu zawartości, który ma przekierowywać użytkowników po edycji węzła.$form_state['redirect']
zhook_form_alter()
nie ma żadnego efektu; należy ustawić w module obsługi przesyłania.źródło
&
wfunction custom_node_submit($form, &$form_state) {
jest bardzo ważne. W przeciwnym razie stan nie zostanie przekazany jako odniesienie, a wprowadzone ręcznie zmiany nie będą miały wpływu.Ten kod działa na stronie Drupal 7.
źródło
admin/content
stronie: drupal.stackexchange.com/a/192271/15055 .Można to zrobić, ustawiając
$form_state['redirect']
na przykład jedną z poniższych linii.To są te same argumenty, które przekażesz
drupal_goto()
.źródło
$form_state['redirect']
zostanie nadpisana, jeśli zostanie($node->nid)
ustawiona na PRAWDA.Nie jestem pewien, czy jest to dla Ciebie opcja, ale jeśli jest to typ zawartości, możesz to osiągnąć dość szybko, korzystając z modułu Reguły, ustawiając regułę uruchamianą przy aktualizacji lub tworzeniu określonego typu zawartości.
źródło