Apa yang saya coba lakukan tidak berhasil, saya masih diarahkan ke / node / {id}:
function hook_form_alter(&$form, $form_state, $form_id) {
$form['actions']['submit']['#submit'][] = 'callback_set_redirect';
}
function callback_set_redirect($form, FormStateInterface $form_state) {
$form_state->setRedirect('custom.landing.page');
}
8
redirection
olsav
sumber
sumber
If saving is an option, privileged users get dedicated form submit buttons to adjust the publishing status while saving in one go. @todo This adjustment makes it close to impossible for contributed modules to integrate with "the Save operation" of this form. Modules need a way to plug themselves into 1) the ::submit() step, and 2) the ::save() step, both decoupled from the pressed form button.
Jawaban:
Pada dasarnya kode ini akan berfungsi untuk mengirimkan aksi saja, tetapi bentuk simpanan simpul drupal memiliki banyak tindakan, saya pikir Anda akan masuk sebagai admin dan mencobanya, kemudian ikuti kode di bawah ini.
jika Anda ingin ini berfungsi untuk tindakan lain juga, Itu berarti masuk sebagai admin dan lihat tombol simpan simpul, Anda akan memiliki opsi pilih "simpan dan publikasikan", "simpan dan batalkan publikasi". seperti yang telah disebutkan
sumber
Menggunakan hook_form_alter, Anda harus melakukan dua hal
1) pastikan itu adalah bentuk simpul 2) tambahkan custom submit handler ke setiap tombol kirim.
Kemudian untuk fungsi kirim, Anda dapat menggunakan logika apa pun yang Anda inginkan. Anda dapat membandingkan dengan NodeForm :: save, di mana ia mengirim Anda baik ke halaman simpul kanonik atau ke halaman depan berdasarkan izin akses pengguna saat ini.
Jika Anda ingin mengubah perilaku ini sehingga tetap pada bentuk simpul saat ini, Anda bisa melakukan ini:
Jika Anda ingin menggunakan halaman pendaratan khusus, Anda cukup mengganti pengalihan dengan kode yang sudah Anda gunakan:
Perhatikan bahwa ini tidak akan menimpa ketika ada parameter "tujuan" $ _GET, seperti di halaman / admin / konten.
Untuk menghapus parameter tujuan dari halaman / admin / konten, Anda harus menghapus centang pada "tujuan" di bawah "Konten: Tautan operasi (Operasi)" di bidang tampilan itu.
sumber
Saya berhasil menggunakan Symfony RedirectResponse:
sumber
Saya tidak dapat menemukan sesuatu yang salah dengan kode asli sehingga hal lain mungkin salah. Ini bekerja dengan baik untuk saya.
Namun,
custom.landing.page
harus berupa rute dan parameter yang ditentukan (jika ada) perlu diteruskan seperti:Lihat FormState :: setRedirect () untuk detailnya.
sumber
Saya selalu menggunakan modul Node Save Redirect untuk fungsi ini. Itu menambahkan opsi ke tipe konten yang mengatakan "apa yang harus dilakukan setelah menyimpan konten baru".
sumber