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).