Hace un tiempo os pregunté por la forma para incluir páginas externas de funciones, dependiendo de una condición.
Eso está superado, pero ahora me ha surgido un problema importante que no entiendo.
Lo primero deciros que tengo un index que llama a una página inicial de funciones, entre las cuales hay una de logueo. Dependiendo del nivel del usuario que se loguee se llama a una página u otra.
Hasta ahí bien.
Tengo, por ejemplo:
index.php
funciones_index.php
funciones_usuario_nivel1.php
index llama solo a funciones_index y ésta es la que se encarga de llamar al resto.
Llama a funciones_usuario_nivel1.php, a una función que muestra un menú. El menú se carga y desde el mismo quiero llamar a otras funciones dependiendo de la opción que se pulse.
Ocurre que boton1 llama a la función funcion1 y si pongo funcion1 en la página funciones_usuario_nivel1 firebug me lanza la advertencia
<b>Warning</b>: call_user_func_array() [<a href='function.call-user-func-array'>function.call-user-func-array</a>]: First argument is expected to be a valid callback, 'funcion1' was given in <b>/var/www/vhosts/mipag.es/ruta1/ruta2/includes/xajax_0.5_compiled/xajax_core/xajaxAIO.inc.php</b> on line <b>1077
En cambio si funcion1 la pongo en funciones_index.php no me da ningún error y la carga correctamente.
Paso a comentaros como tengo estructurada la llamada al framework
Código PHP:
Ver original
//en index.php <?php require_once ('includes/xajax_0.5_compiled/xajax_core/xajaxAIO.inc.php'); require('funciones_index.php'); ?> <head> <?php $xajax->printJavascript("./includes/xajax_0.5_compiled"); ?> </head> //en funciones_index.php $xajax = new xajax(); $xajax->setCharEncoding('iso-8859-1'); $xajax->register(XAJAX_FUNCTION, "funcionlogueo"); $xajax->register(XAJAX_FUNCTION, "funcion1"); . . . function funcionlogueo { $respuesta = new xajaxResponse(); $response = cargamenu(); $respuesta->loadCommands($response); return $respuesta; } . . . $xajax->processRequest(); //en funciones_usuario_nivel1.php . . . function cargamenu() { $respuesta = new xajaxResponse(); $response = funcion1(); $respuesta->loadCommands($response); return $respuesta; }
Como os decía antes, si función 1 la pongo en funciones_usuario_nivel1.php me lanza el error al debuggearlo. En cambio si la pongo en funciones_index.php lo hace todo correctamente.
Alguien sabe por qué pasa ésto? Qué estoy haciendo mal?
Un saludo!!