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';
}
รหัสเปลี่ยนเส้นทางแบบฟอร์มอย่างอิสระจากปุ่มคลิกเพื่อส่งแบบฟอร์ม หากคุณต้องการเปลี่ยนเส้นทางแบบฟอร์มเฉพาะเมื่อมีการคลิกปุ่มส่งเฉพาะคุณควรใช้รหัสต่อไปนี้
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 แบบฟอร์มไม่มีขีดกลาง ID ของฟอร์มคือชื่อของฟังก์ชัน PHP ที่สร้างฟอร์ม (หรือที่เรียกว่า form builder) และฟังก์ชั่น PHP ไม่สามารถมียัติภังค์ในชื่อได้
- แบบฟอร์ม ID ที่ถูกส่งไปยังการใช้งานของhook_form_alter () , hook_form_BASE_FORM_ID_alter ()และhook_form_FORM_ID_alter ()
hook_form_FORM_ID_alter()
ไม่ต้องการจริงๆเนื่องจากมีการเรียกใช้แบบฟอร์มเฉพาะในขณะที่อีกสอง hooks ถูกเรียกใช้สำหรับมากกว่าหนึ่งรูปแบบ
- ฟังก์ชั่นแรกคือการใช้งานของhook_form_BASE_FORM_ID_alter () ; ในกรณีนี้ ID รูปแบบพื้นฐานคือ "node_form" ซึ่งเป็นรูปแบบพื้นฐานสำหรับฟอร์มแก้ไขโหนด
- แบบฟอร์มการแก้ไขโหนดมี
$form['#node']
ซึ่งเป็นวัตถุโหนดสำหรับวัตถุที่กำลังแก้ไข; "กำหนดเอง" เป็น ID ย่อสำหรับประเภทเนื้อหาที่คุณต้องการเปลี่ยนเส้นทางผู้ใช้เมื่อพวกเขาแก้ไขโหนด
- การเปลี่ยนแปลง
$form_state['redirect']
จากhook_form_alter()
ไม่มีผลใด ๆ จำเป็นต้องตั้งค่าจากตัวจัดการการส่ง