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';
}
O código redireciona o formulário independentemente do botão clicado para enviar o formulário. Se você deseja redirecionar um formulário apenas quando um botão de envio específico é clicado, use o código a seguir.
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';
}
- O ID do formulário não contém hífens. O ID do formulário é o nome da função PHP que gera o formulário (também conhecido como construtor de formulários), e uma função PHP não pode conter hífens em seu nome.
- O ID do formulário é passado para as implementações de hook_form_alter () , hook_form_BASE_FORM_ID_alter () e hook_form_FORM_ID_alter () .
hook_form_FORM_ID_alter()
realmente não precisa dele, pois é chamado para um formulário específico, enquanto os outros dois ganchos são chamados para mais de um formulário.
- A primeira função é a implementação de hook_form_BASE_FORM_ID_alter () ; nesse caso, o ID do formulário base é "node_form", que é o formulário base para o formulário de edição do nó.
- O formulário de edição do nó contém
$form['#node']
, que é o objeto do nó que está sendo editado; "custom" é o ID curto do tipo de conteúdo que você deseja redirecionar os usuários depois que eles editam um nó.
- Mudar
$form_state['redirect']
de hook_form_alter()
não tem nenhum efeito; ele precisa ser definido a partir de um manipulador de envio.