Usando hook_form_alter
, como redirecionar um usuário para uma página personalizada após criar ou editar um nó em vez do nó que foi criado ou editado?
O código atual para hook_form_alter()
é o seguinte:
function custom_form_alter(&$form, &$form_state, $form_id) {
if ($form['#id'] == 'custom-node-form') {
$form['actions']['submit']['#value'] = t('Add Entry');
$form['field_custom_email']['und'][0]['value']['#element_validate'] = array('_custom_form_validate_email');
}
}
7
forms
redirection
Citricguy
fonte
fonte
Respostas:
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.
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.$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ó.$form_state['redirect']
dehook_form_alter()
não tem nenhum efeito; ele precisa ser definido a partir de um manipulador de envio.fonte
&
infunction custom_node_submit($form, &$form_state) {
é muito importante. Caso contrário, você não está passando o estado como referência e as edições feitas manualmente não serão afetadas.Este código funciona em um site Drupal 7.
fonte
admin/content
página: drupal.stackexchange.com/a/192271/15055 .Isso pode ser feito configurando
$form_state['redirect']
, por exemplo, usando uma das seguintes linhas.São os mesmos argumentos para os quais você passaria
drupal_goto()
.fonte
$form_state['redirect']
será substituído se for($node->nid)
avaliado como TRUE.Não tenho certeza se essa é uma opção para você, mas se esse é um tipo de conteúdo, você pode conseguir isso rapidamente, usando o módulo Regras, definindo uma regra a ser acionada na atualização ou criação de um determinado tipo de conteúdo.
fonte