Estoy probando agregar la validación de usuarios en la aplicación y
tengo un controlador "admin_controler.php" que cuando el usuario se loguea lo dirige a uno de los controladores ... este es la parte del código...
....
if($auth->authenticate()){
$usuario = $auth->get_identity();
Flash::success("Bienvenido {$usuario}");
$this->route_to("controller: parroquias");
} else {
Flash::error("Usuario/Password invalido");
$this->login = $login;
$this->route_to("action: index");
}
....
El problema que tengo es que tengo definido un template que usan todos los controladores , pero no se carga el menu ... que está incluido en el
template ...
Lo que veo es que cuando se logea el usuario y se hace el route... en la
url de la página queda :
http://localhost/belen/admin/valida/
y si manualmente le corrijo el url al que debería ser
http://localhost/belen/parroquias
Me carga el menú correctamente...
Alguna idea de lo que debería hacer...
Gracias
Comentarios
Tengo definido en view\layouts , un archivo de menu "menu.php" ..
que utiliza un menú en javascript como el siguiente ...
<script type="text/javascript" src="public/javascript/JSCookMenu/JSCookMenu.js"></script>
<link rel="stylesheet" href="css/ThemeGray/theme.css" type="text/css">
<script type="text/javascript" src="css/ThemeGray/theme.js"></script>
<script type="text/javascript"><!--
var myMenu =
[
[null, 'Inicio', '../../admin', null, 'Inicio del sistema'], // a menu item
_cmSplit,
[null, 'Seguridad', null, null, 'Gestión de usuarios', // a menu item
[null, 'Niveles', '../../belen/niveles', null, 'Niveles de Usuarios'], // a menu item
[null, 'Usuarios', '../../belen/usuarios', null, 'Usuarios del sistema'], // a menu item
[null, 'Acciones', '../../belen/acciones', null, 'Acciones del sistema'], // a menu item
[null, 'Permisos', '../../belen/permisos', null, 'Permisos de usuarios'], // a menu item
....
Luego tengo definida otra página llamda "principal.phtml" , donde cargo la cabecera , el pie de página , llamo a la página de menú ... y tengo el espacio del content() .... donde se cargan los controladores...
.....
<body>
<p> </p>
<table width="70%" border="0" align="center" >
<tr>
<td><img src="/belen/public/img/plantilla/cintillo.jpg" alt="3" width="900" height="52" /> <img src="/belen/public/img/plantilla/banner.png" alt="2" width="900" height="80" />
</td>
</tr>
<tr style="background:url(img/plantilla/centro_.jpg)">
<td height="415" align="left" valign="top"><table width="100%" height="100%" border="0">
<tr>
<td height="30" align="left" valign="top">
<?require("menu.php");?>
</td>
</tr>
.....
está pagina "principal.phtml" ,es la que defino en cada controlador como template ... ejemplo :
<?php
class ParroquiasController extends StandardForm {
public $scaffold = true;
public $template = "principal";
.....
Ahora bien , cuando inicio la aplicación "http://localhost/belen" carga el template perfectamente y va al controlador login ... ingreso el usuario y contraseña ... que hace un route hacia uno de los controladores , en este caso "parroquias" ...
....
if($auth->authenticate()){
$usuario = $auth->get_identity();
Flash::success("Bienvenido {$usuario}");
$this->route_to("controller: parroquias");
.................
Al hacer esto , si bien muestra los datos del controlador bien , NO carga el menú ...
Probé hacer un "redirect" en lugar de un "route_to" y ahora me carga bien el menú , pero si ingreso en algunas de las opciones del standardForm como por ejemplo hacer un browse ... luego de hacer click en el botón "Volver" ... ya me deja de mostrar el menú ...
.................
if($auth->authenticate()){
$usuario = $auth->get_identity();
Flash::success("Bienvenido {$usuario}");
//$this->route_to("controller: parroquias");
$this->redirect("/parroquias");
.................
Quisiera saber si alguien tuve una situación similar que me pueda ayudar con este problema ...
Saludos y Gracias...
Pero te puedo aclarar un poco como funcionan route_to y redirect.
route_to: realiza un enrutamiento interno, es decir a ciencia cierta el navegador no se percata de que esta siendo enrutado, por ese motivo es que no afecta la barra de direcciones.
redirect: realiza un redireccionamiento, esto es diferente a enrutar, ya que en este caso se reescribe la url y por lo tanto afecta la barra de direcciones, internamente kumbia reescribe el atributo location del objeto window con javascript (es decir window.location).
Espero que te sirva de ayuda.
Luego cada controlador utiliza la sentencia
public $template = "principal";
El tema es el siguiente , cuando se ingresa por primera vez a la aplicación el menú aparece normalmente ... pero cuando se empieza a navegar por las distintas funciones como por ejemplo hacer un browse de usuarios y hacer click en volver ... el menú ya no aparece más ...
Les adjunto 2 imagenes ... la primera con el menu ... luego se hace click en el botón "visualizar" ( browse ) y luego en "volver" y el menu desaparece ... y la cabecera y pie que están definidos en el template siguen saliendo correctamente ...
Alguna idea que puede ser ???
Alguien a utilizado menús desplegables en Kumbia , que me pueda dar algún ejemplo ?
Saludos
<script type="text/javascript" src="public/javascript/JSCookMenu/JSCookMenu.js"></script>
<link rel="stylesheet" href="css/ThemeGray/theme.css" type="text/css">
<script type="text/javascript" src="css/ThemeGray/theme.js"></script>
<script type="text/javascript"><!--
var myMenu =
[
.....
si le ponemos la ruta total ... funciona , por ejemplo
<script type="text/javascript" src="http://LocalHost/Belen/public/javascript/JSCookMenu/JSCookMenu.js"></script>
<link rel="stylesheet" href="http://LocalHost/Belen/public/css/ThemeGray/theme.css" type="text/css">
<script type="text/javascript" src="http://LocalHost/Belen/public/css/ThemeGray/theme.js"></script>
<script type="text/javascript"><!--
var myMenu =
[
.....
Hay alguna forma de utilizar alguna variable por ejemplo para que funcione tanto en desarrollo como en producción ?
<?php echo javascript_include_tag("JSCookMenu/JSCookMenu") ?>
Para los estilos
<?php echo stylesheet_link_tag("ThemeGray/theme") ?>
Pero me surje otro problema ...con el menu ... cómo hago para definir los links de cada una de las opciones ... porque si no las defino con la Ruta Total y empiezo a navegar , da error ...
Ejemplo del menu con JavaScritp, el 2 parámetro es el link ,
...
[null, 'Seguridad', null, null, 'Gestión de usuarios', // a menu item
[null, 'Niveles', '[b]../../belen/niveles[/b]', null, 'Niveles de Usuarios'], // a menu item
[null, 'Usuarios', '../../belen/usuarios', null, 'Usuarios del sistema'], // a menu item
[null, 'Acciones', '../../belen/acciones', null, 'Acciones del sistema'], // a menu item
[null, 'Permisos', '../../belen/permisos', null, 'Permisos de usuarios'], // a menu item
....
Para que me funcione estoy poniendo en el Link la ruta total ... ejemplo
"http://LocalHost/belen/niveles"
Cómo se puede hacer para que sea relativo al servidor donde esté instalado es decir que se pueda usar en desarrollo y produccion ?
Gracias....
Esto en kumbia no existe ya que en realidad quien sabe donde esta tu controller es el Dispatcher y el Router y esto porque kumbia para efecto del usuario que ejecuta la aplicacion desde el browser nunca se entera que existe un directorio apps/default/ ya que en realidad todo se ejecuta en el public/
que te digo con esto que kumbia no entiende esa ruta que le intentas enviar ../../belen/niveles intenta pasarle la ruta asi...
[null, 'Niveles', [b]'belen/niveles'[/b], null, 'Niveles de Usuarios'], // a menu item
y avisas si te funciona...
Estoy utilizando un menu javascript ( "JSCookMenu" ) ... cambié la definición del menu según lo sugerido a :
......
<script type="text/javascript"><!--
var myMenu =
[
[null, 'Inicio', 'belen/admin', null, 'Inicio del sistema'], // a menu item
_cmSplit,
[null, 'Seguridad', null, null, 'Gestión de usuarios', // a menu item
[null, 'Niveles', 'belen/niveles', null, 'Niveles de Usuarios'], // a menu item
[null, 'Usuarios', 'belen/usuarios', null, 'Usuarios del sistema'], // a menu item
[null, 'Acciones', 'belen/acciones', null, 'Acciones del sistema'], // a menu item
[null, 'Permisos', 'belen/permisos', null, 'Permisos de usuarios'], // a menu item
],
_cmSplit,
......
El tema es que cuando ingreso a la aplicación , con :
"http://localhost/belen"
Ingreso a la pantalla de login , donde ingreso usuario y contraseña ...
luego ... acceso por ejemplo al menú niveles , y me da el siguiente error :
Está tratando de acceder a un controlador que no existe. Kumbia puede codificarlo por usted:
Deseo crear un controlador ApplicationController
Deseo crear un controlador StandardForm de la tabla 'belen'
Cancelar
KumbiaException: No se encontró el Controlador "belen". Hubo un problema al cargar el controlador, probablemente el archivo no exista en el directorio de módulos ó exista algun error de sintaxis. (102)
En el archivo C:\xampp\htdocs\belen\library\kumbia\dispatcher\dispatcher.php en la línea: 223<
C:\xampp\htdocs\belen\library\kumbia\kumbia.php(362)
C:\xampp\htdocs\belen\public\index.php(72)
Información Adicional:
Aplicación actual: default
Entorno actual: development
Ubicación actual: default/belen/niveles
Modelos Cargados: Acciones, Categorias, Comunidades, Estados, Niveles, Parroquias, Permisos, Sectores, Usuarios
Modulos Cargados: library/kumbia/logger/logger.php, library/mail/mail.php, library/libchart/libchart.php, library/kumbia/auth/auth.php
Plugins Cargados:
Datos de Session:
.......
y veo que en la URL del navegador me está poniendo :
"http://localhost/belen/belen/niveles"
[null, 'Seguridad', null, null, 'Gestión de usuarios', // a menu item
[null, 'Niveles', [b]'/belen/niveles',[/b] null, 'Niveles de Usuarios'], // a menu item
[null, 'Usuarios', [b]'/belen/usuarios'[/b], null, 'Usuarios del sistema'], // a menu item
[null, 'Acciones', [b]'/belen/acciones'[/b], null, 'Acciones del sistema'], // a menu item
[null, 'Permisos', '/belen/permisos', null, 'Permisos de usuarios'], // a menu item
Gracias...