it-swarm-id.com

Redirect ke halaman khusus setelah sebuah node ditambahkan atau diedit

Dengan menggunakan hook_form_alter, Bagaimana saya bisa mengarahkan pengguna ke halaman khusus setelah membuat atau mengedit simpul alih-alih simpul yang dibuat atau diedit?

Kode saat ini untuk hook_form_alter() adalah yang berikut:

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');
  }
}
14
Citricguy
function custom_form_node_form_alter(&$form, &$form_state, $form_id) {
  if ($form['#node']->type == 'custom') {
    $form['actions']['submit']['#value'] = t('Add Entry');
    $form['field_custom_email']['und'][0]['value']['#element_validate'] = array('_custom_form_validate_email');
    $form['#submit'][] = 'custom_node_submit';
  }
}

function custom_node_submit($form, &$form_state) {
  $form_state['redirect'] = 'choose/your/path';
}

Kode mengarahkan ulang formulir secara independen dari tombol yang diklik untuk mengirimkan formulir. Jika Anda ingin mengarahkan ulang formulir hanya ketika tombol pengiriman tertentu diklik, maka Anda harus menggunakan kode berikut.

function custom_form_node_form_alter(&$form, &$form_state, $form_id) {
  if ($form['#node']->type == 'custom') {
    $form['actions']['submit']['#value'] = t('Add Entry');
    $form['field_custom_email']['und'][0]['value']['#element_validate'] = array('_custom_form_validate_email');
    $form['actions']['submit']['#submit'][] = 'custom_node_submit';
  }
}

function custom_node_submit($form, &$form_state) {
  $form_state['redirect'] = 'choose/your/path';
}

  • ID formulir tidak mengandung tanda hubung. ID formulir adalah nama fungsi PHP yang menghasilkan formulir (a.k.a. pembuat formulir), dan fungsi PHP tidak dapat berisi tanda hubung dalam namanya.
  • ID formulir diteruskan ke implementasi hook_form_alter () , hook_form_BASE_FORM_ID_alter () , dan hook_form_FORM_ID_alter () . hook_form_FORM_ID_alter() tidak benar-benar membutuhkannya, karena ia dipanggil untuk formulir tertentu, sedangkan dua kait lainnya dipanggil untuk lebih dari satu formulir.
  • Fungsi pertama adalah implementasi hook_form_BASE_FORM_ID_alter () ; dalam hal ini, ID bentuk dasar adalah "node_form" yang merupakan bentuk dasar untuk bentuk edit simpul.
  • Formulir edit simpul berisi $form['#node'], Yang merupakan objek simpul untuk objek yang sedang diedit; "custom" adalah ID pendek untuk tipe konten yang ingin Anda redirect kepada pengguna begitu mereka mengedit sebuah node.
  • Mengubah $form_state['redirect'] Dari hook_form_alter() tidak memiliki efek apa pun; itu perlu diatur dari penangan pengajuan.
16
kiamlaluno

Kode ini berfungsi di situs Drupal 7.

/**
 * Implements hook_form_alter()
 */

function custom_form_alter(&$form, &$form_state, $form_id) {    
  if ($form_id == 'article_node_form') {
    $form['actions']['submit']['#submit'][] = 'mysubmit_node_submit';
  }     
}

function mysubmit_node_submit($form, &$form_state) {
  $form_state['redirect'] = '/homepage';
}
9
sea26.2

Ini dapat dilakukan dengan mengatur $form_state['redirect'], Misalnya menggunakan salah satu baris berikut.

$form_state['redirect'] = "some-internal-path";
$form_state['redirect'] = array($path, $options_array, $http_code);

Argumen yang sama dengan yang akan Anda sampaikan drupal_goto() .

4
Shoaib Nawaz

Tidak yakin apakah ini pilihan bagi Anda, tetapi jika ini adalah jenis konten, Anda dapat mencapainya dengan cukup cepat dengan menggunakan modul Aturan dengan menetapkan aturan yang akan dipicu saat pembaruan atau pembuatan jenis konten tertentu.

2
Aaron Ortega