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 함수의 이름이며 PHP 함수는 이름에 하이픈을 포함 할 수 없습니다.
- 양식 ID는 hook_form_alter () , hook_form_BASE_FORM_ID_alter () 및 hook_form_FORM_ID_alter () 의 구현으로 전달됩니다 .
hook_form_FORM_ID_alter()
특정 양식에 대해 호출되기 때문에 실제로는 필요하지 않지만 다른 두 후크는 둘 이상의 양식에 대해 호출됩니다.
- 첫 번째 함수는 hook_form_BASE_FORM_ID_alter () 구현입니다 . 이 경우 기본 양식 ID는 노드 편집 양식의 기본 양식 인 "node_form"입니다.
- 노드 편집 양식에는
$form['#node']
편집중인 객체의 노드 객체 인가 포함됩니다. "custom"은 사용자가 노드를 편집 한 후 사용자를 리디렉션하려는 컨텐츠 유형의 짧은 ID입니다.
- 변경
$form_state['redirect']
에서하는 것은 hook_form_alter()
영향을주지 않는다; 제출 핸들러에서 설정해야합니다.