Di salah satu formulir saya, saya mencoba mengatur $form_state['redirect']
agar formulir akan menuju ke tujuan itu setelah pengguna mengklik salah satu tombol tindakan.
Jika saya memeriksa $form_state['redirect']
sebelum dan setelah saya menambahkan arahan ulang, itu NULL sebelum, dan setelah berisi array yang tepat. Inilah cara saya mengatur pengalihan:
$form_state['redirect'] = array(
'my/custom/path/' . $nid,
array('query' => drupal_get_destination()),
);
Saya ingin mempertahankan tujuan dari bentuk yang dilihat pengguna ke jalur berikutnya (itu sebabnya saya menelepon drupal_get_destination()
, yang mengembalikan array dengan 'destination' => 'some/path/here'
di dalamnya.
Tampaknya, karena sudah ada tujuan di jalur formulir saat ini, formulir dialihkan ke tujuan itu tidak peduli apa yang saya masukkan ke formulir saya sendiri menyerahkan penangan (lihat kode di atas). Saya bahkan mencoba menggunakan drupal_goto () dan itu tidak mengarahkan pengguna juga.
sumber
Terima kasih untuk ini, tetapi untuk beberapa alasan ini tidak berhasil ketika saya mencobanya. Saya mendapat kesalahan fatal - data yang dikirim dalam contoh jawaban di atas tidak memenuhi persyaratan
drupal_goto()
Mungkin karena jawaban ini agak lama, tetapi saya dapat membuatnya bekerja dengan ini sebagai gantinya:
Saya tahu ini melanggar catatan ini:
Tapi, dalam hal ini, Anda tentu ingin menimpa variabel. Anda tidak akan menetapkan nilai ini kecuali Anda ingin mengabaikan nilai set modul lain. Juga, saya pikir Anda harus melakukannya karena cara
drupal_goto()
kerjanya dengan parameter kueri. Ini mungkin juga mengapa jawaban asli melemparkan kesalahan fatal di situs saya.sumber
$form_state['redirect']
, atau Anda mungkin mendapatkan WSOD dengan pengalihan yang bersaing.atur formulir #action
sumber
drupal_goto()
dihook_node_insert()
akan mengacaukan segalanya (karenadrupal_goto()
panggilandrupal_exit()
mencegah node baru dari yang disimpan).