En uno de mis formularios, estoy tratando de establecer un $form_state['redirect']formulario para que el formulario vaya a ese destino después de que el usuario haga clic en uno de los botones de acción.
Si inspecciono $form_state['redirect']antes y después de agregar la redirección, es NULL antes y después contiene la matriz adecuada. Así es como estoy configurando la redirección:
$form_state['redirect'] = array(
'my/custom/path/' . $nid,
array('query' => drupal_get_destination()),
);
Quiero preservar el destino del formulario que el usuario está viendo a la siguiente ruta (es por eso que estoy llamando drupal_get_destination(), que devuelve una matriz con el 'destination' => 'some/path/here'interior.
Parece que, debido a que ya hay un destino en la ruta del formulario actual, el formulario se redirige a ese destino sin importar lo que coloque en mi propio controlador de envío de formulario (consulte el código anterior). Incluso intenté usar drupal_goto () y eso tampoco redirigió al usuario.
fuente

Gracias por esto, pero por alguna razón esto no funcionó cuando lo probé. Recibí un error fatal: los datos enviados en la respuesta de ejemplo anterior no satisfacen los requisitos de
drupal_goto()Puede ser porque esta respuesta es bastante antigua, pero pude hacer que funcione con esto:
Sé que esto viola esta nota:
Pero, en este caso, definitivamente desea sobrescribir la variable. No establecería este valor a menos que quisiera ignorar los valores establecidos de otro módulo. Además, creo que debe hacerlo debido a la forma en que
drupal_goto()funciona con el parámetro de consulta. Esta también puede ser la razón por la cual la respuesta original arrojó errores fatales en mi sitio.fuente
$form_state['redirect'], o puede obtener un WSOD con redireccionamientos competitivos.establecer formulario # acción
fuente
drupal_goto()enhook_node_insert()lo enredar las cosas (porquedrupal_goto()las llamadasdrupal_exit()evitando que el nuevo nodo se guarden).