Este equipo de expertos luego de ciertos días de investigación y recopilar de datos, dieron con la solución, nuestro deseo es que resulte útil para ti en tu trabajo.
Solución:
En el controlador de envío que haces
Drupal 7:
$form_state['redirect'] = 'url';
Drupal 8:
$form_state->setRedirect('route', $args, $options);
$form_state->setRedirectUrl(DrupalCoreUrl);
Cabe señalar que hay varios factores desencadenantes que pueden evitar una redirección:
$form_state['redirect'] === FALSE
: si se establece, la función de creación de formularios o el controlador de validación/envío de formularios no desea que se redirija a un usuario, lo que significa quedrupal_goto()
no se invoca. Para la mayoría de los formularios, la lógica de redirección será la misma independientemente de si$form_state['redirect']
es indefinido o FALSO. Sin embargo, en caso de que no se haya definido y la solicitud actual contenga una consulta de ‘destino’ string,drupal_goto()
se redirigirá a ese destino dado en su lugar. Solo ajuste$form_state['redirect']
aFALSE
evitará cualquier redirección.$form_state['no_redirect'] === TRUE
: cuando se establece, la devolución de llamada que creó originalmente el formulario rechaza explícitamente cualquier redirección, independientemente del valor de redirección en$form_state['redirect']
. Por ejemplo,ajax_get_form()
define$form_state['no_redirect']
al crear un formulario en una devolución de llamada AJAX para evitar cualquier redirección.$form_state['no_redirect']
NO debe ser alterado por las funciones del creador de formularios o los controladores de validación/envío de formularios.$form_state['programmed'] === TRUE
: significa que el envío del formulario generalmente se invocó a través dedrupal_form_submit()
por lo que cualquier redirección rompería el script que invocódrupal_form_submit()
.$form_state['rebuild'] === TRUE
: significa que el formulario debe reconstruirse sin redirección.
Para Drupal 7, probé esto en un módulo personalizado y funciona. También se puede utilizar en un tema:
function my_theme_form_alter(&$form, &$form_state, $form_id)
if ($form_id == 'contact_site_form')
$form['#submit'][] = 'contact_form_submit_handler';
function contact_form_submit_handler(&$form, &$form_state)
$form_state['redirect'] = 'thank-you-page-alias';
Por cierto, encontré este fragmento aquí: https://gist.github.com/postrational/5768796
Si te animas, tienes la opción de dejar un post acerca de qué le añadirías a esta reseña.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)