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';
}
El código redirige el formulario independientemente del botón en el que se hizo clic para enviar el formulario. Si desea redirigir un formulario solo cuando se hace clic en un botón de envío específico, debe usar el siguiente código.
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';
}
- El ID del formulario no contiene guiones. El ID del formulario es el nombre de la función PHP que genera el formulario (también conocido como el generador de formularios), y una función PHP no puede contener guiones en su nombre.
- El ID del formulario se pasa a las implementaciones de hook_form_alter () , hook_form_BASE_FORM_ID_alter () y hook_form_FORM_ID_alter () .
hook_form_FORM_ID_alter()
realmente no lo necesita, ya que se llama para un formulario específico, mientras que los otros dos ganchos se invocan para más de un formulario.
- La primera función es la implementación de hook_form_BASE_FORM_ID_alter () ; en este caso, el ID del formulario base es "node_form", que es el formulario base para el formulario de edición del nodo.
- El formulario de edición de nodo contiene
$form['#node']
, que es el objeto de nodo para el objeto que se está editando; "personalizado" es la ID corta para el tipo de contenido que desea redirigir a los usuarios una vez que editan un nodo.
- La alteración
$form_state['redirect']
de hook_form_alter()
no tiene ningún efecto; debe configurarse desde un controlador de envío.