Menggunakan hook_form_alter, Anda harus melakukan dua hal
1) pastikan itu adalah bentuk simpul 2) tambahkan custom submit handler ke setiap tombol kirim.
function mymodule_form_alter(&$form, FormStateInterface $form_state, $form_id) {
if (isset($form['#entity_type']) && $form['#entity_type'] == 'node') {
foreach (array_keys($form['actions']) as $action) {
if ($action != 'preview' && isset($form['actions'][$action]['#type']) && $form['actions'][$action]['#type'] === 'submit') {
$form['actions'][$action]['#submit'][] = 'mymodule_node_form_submit';
}
}
}
}
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:
function mymodule_node_form_submit($form, FormStateInterface $form_state) {
$node = $form_state->getFormObject()->getEntity();
if ($node->id()) {
if ($node->access('edit')) {
$form_state->setRedirect(
'entity.node.edit_form',
['node' => $node->id()]
);
}
else {
$form_state->setRedirect('<front>');
}
}
}
Jika Anda ingin menggunakan halaman pendaratan khusus, Anda cukup mengganti pengalihan dengan kode yang sudah Anda gunakan:
$form_state->setRedirect('custom.landing.page');
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.
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.