Consulta - redireccionar página

Hola buenas tardes, les quería consultar si hay alguna manera de redireccionar a una URL especifica dentro de 3W. Como header(‘location’) de php por ejemplo.
Saludos, muchas gracias

Hola, podes usar lo siguiente:


                $nuevo_request = new nuevo_request($operacion, $accion, false);
		$nuevo_request->set_mensaje_post_nav($mensaje);
		throw $nuevo_request;

donde $operacion es la operación a redirigir y $accion es la acción dentro de la operación, opcionalmente se puede pasar un mensaje.

NOTA: Apartir de 3W 3.13.0 la clase pasa de llamarse de nuevo_request a NuevoRequest.

saludos.

Otra alternativa es generar la URL a redirigir y luego utilizar uno de los siguientes métodos:

Genero URL a redirigir:


$operacion = 'fecha_examen';
$accion = 'index';
//Los parámetros forman parte de la Query String
$parametros = array(
			"orden" => "ASC",
			"materia" => "matemática"
		);
$url_redireccion = kernel::vinculador()->crear($operacion, $accion, $parametros);
...

Redirijo (método recomendado):


                ...
                $req = new nuevo_request();
		$req->set_url($url_redireccion);
		throw $req;

Redirijo (PHP plano):


                ...
                header('Location: '.$url_redireccion);

NOTA: Apartir de 3W 3.13.0 la clase pasa de llamarse de nuevo_request a NuevoRequest.

saludos.

Hola, gracias por la respuesta, lo había probado de esas maneras pero ninguna me funcionó.
El header() directamente no me lo toma, como que lo ignora, no tira error ni nada.
Y el new nuevo_request(); queda el cartelito de cargando y nunca sale de ahí, tengo que refrescar la página.
Tampoco queda nada en los logs!
Quizás no podría hacerlo desde donde lo estoy ejecutando, estoy en un controlador que extiende de controlador_con_filtro, para poder utilizar new nuevo_request le agregue use kernel\nucleo\nuevo_request.
Estaría bien así?

Muchas gracias, saludos!

Hola, si, estaría bien así:

si, me falto aclarar que agregues el use (a mi me lo agrega solo el IDE):


use kernel\nucleo\nuevo_request;

preguntas:
¿que versión de 3W están usando?
¿están usando SSL/HTTPS?

saludos.

Buenas!!
Estamos en la versión 3.12
La URL a la que quiero redireccionar es http
y en el archivo config lo tenemos en false (‘ssl’ => false,)

Hola, es extraño lo que me comentas!!!

Yo hice una prueba dentro de un controlador que extiende de controlador_con_filtro, y la redirección la hace exitosamente.

Haciendo esto debería funcionar, ej:


use kernel\nucleo\nuevo_request;
......
$nuevo_request = new nuevo_request('oferta_comisiones', 'index', false);
$nuevo_request->set_mensaje_post_nav('Redirecciónando!!!!');
throw $nuevo_request;

  1. ¿No estarás redireccionando a una operación/acción que no existe, o que no esta habilitada para el perfil activo de la persona (ej: estas como alumno y lo redirigís a Ofertas de comisiones)?
  2. ¿Ustedes el código lo tienen subido al Colab? Pasame la URL del Colab al código que agregaste, o sino copiame el fragmento de código que no les funciona.

saludos y gracias.

Hola gracias por la ayuda. Si lo hice exactamente de esa manera y no pude…
Ahora cambie de lugar desde donde hago el llamado a nuevo_request y me tira un error en el log, pero no ayuda… Lo dejo mas abajo

  1. No, lo redirecciono a una acción dentro de la misma operación.
    2)Sí, está subido, pero te vas a volver loco, hice varias pruebas y deje todo medio comentado y desordenado jaja
    https://colab.siu.edu.ar/svn/guarani3/nodos/unm/3w/trunk/3.12.0/src/pers/unm/operaciones/plan_trabajo_anual

En el controlador get_pta_por_id() es la que redirecciona y la llamo desde el pagelet_home;

================================================================================
================================= ERRORES ==================================

clase: kernel\nucleo\nuevo_request
mensaje:
traza: [TRAZA]

—[ 0 ]-----------------------------------------

  • function: unm\operaciones\plan_trabajo_anual\controlador->get_pta_por_id

  • file: /usr/local/proyectos/3W/src/pers/unm/operaciones/plan_trabajo_anual/controlador.php, linea 255

  • param:
    0: 12
    —[ 1 ]-----------------------------------------

  • function: unm\operaciones\plan_trabajo_anual\pagelet_home->prepare

  • file: /usr/local/proyectos/3W/src/siu/lib/kernel/interfaz/pagelet.php, linea 379

—[ 2 ]-----------------------------------------

  • function: kernel\interfaz\pagelet->exec_prepare
  • file: /usr/local/proyectos/3W/src/siu/lib/kernel/interfaz/pagelet.php, linea 201

—[ 3 ]-----------------------------------------

  • function: kernel\interfaz\pagelet->render_ajax
  • file: /usr/local/proyectos/3W/src/siu/lib/kernel/interfaz/renderer.php, linea 126

—[ 4 ]-----------------------------------------

  • function: kernel\interfaz\renderer->procesar
  • file: /usr/local/proyectos/3W/src/siu/lib/kernel/nucleo/acceso_web.php, linea 137

—[ 5 ]-----------------------------------------

  • function: kernel\nucleo\acceso_web::procesar_response
  • file: /usr/local/proyectos/3W/src/siu/lib/kernel/nucleo/acceso_web.php, linea 28

—[ 6 ]-----------------------------------------

  • function: kernel\nucleo\acceso_web::procesar
  • file: /usr/local/proyectos/3W/src/siu/www/index.php, linea 4

Hola, te comento que lo termine resolviendo con js, modifique unas cosas y luego hago window.location.assign(info.URL); desde un .js

Gracias por todo!

Hola, estuve viendo el código y esta bien como lo pusiste, tendría que ver en mas profundidad porque no esta funcionando!!!

Si, una alternativa seria redirigir con JavaScript, o sino usando la función header de PHP.

saludos.