โดยใช้ hook_form_alter()
คุณสามารถเพิ่มตัวจัดการการส่งที่กำหนดการเปลี่ยนเส้นทาง รหัสสำหรับตัวจัดการการส่งจะคล้ายกับรหัสต่อไปนี้
ฟังก์ชัน mymodule_node_edit_submit (อาร์เรย์ &$form, FormStateInterface $form_state) {
$node = $form_state->getFormObject()->getEntity();
$id = \Drupal::request()->query->get('id');
$form_state->setRedirect('entity.node.canonical', ['node' => $node->id()], [query => ['id' => $id]]);
}
รหัสสำหรับ hook_form_BASE_FORM_ID_alter()
ก็จะเป็นสิ่งต่อไปนี้
ฟังก์ชัน mymodule_form_node_form_alter (&$form, FormStateInterface $form_state) {
$node = $form_state->getFormObject()->getEntity();
// เนื่องจากมีการเรียกใช้ hook นี้สำหรับทุก ๆ โหนด โปรดตรวจสอบประเภทเนื้อหาของมัน
ถ้า ($node->getType() == 'ประเภทเนื้อหาที่คุณสนใจ') {
$form['actions']['submit']['#submit'][] = 'mymodule_node_edit_submit';
}
}
เดอะ hook_form_FORM_ID_alter()
ควรตั้งชื่อการใช้งาน mymodule_form_node_<content_type_machine_name>_alter()
. (แทนที่ โมดูลของฉัน ด้วยชื่อเครื่องโมดูล <content_type_machine_name>
ด้วยชื่อเครื่องชนิดเนื้อหา) ในกรณีนี้ เนื่องจาก hook ถูกเรียกใช้เฉพาะสำหรับชนิดเนื้อหา จึงไม่จำเป็นต้องตรวจสอบชนิดเนื้อหาของโหนดก่อนที่จะเพิ่มตัวจัดการการส่ง