Pregunta

Acabo de empezar a usar CodeIgniter hace unas horas y me encontré con algunos problemas. Estoy tratando de llamar a una función, que actualmente está en un controlador llamado admin.php . Estoy tratando de acceder a esto desde un ayudante. ¿Cómo haría esto correctamente? He intentado casi todo, pero nada parece funcionar ya que recibo el siguiente error:

Fatal error: Call to a member function login() on a non-object

Cualquier ayuda sobre este tema sería muy apreciada

¿Fue útil?

Solución

Estoy de acuerdo con jimyi. Sus clases auxiliares y de biblioteca deben ser independientes de cualquier controlador particular en una aplicación. Si tiene un " título de la página " ayudante, por ejemplo, no debería depender de ningún comportamiento particular de su controlador de administración. ¿Qué sucede si desea utilizar el asistente de página en otra aplicación que no tenía un controlador de administrador? O qué pasa si realiza cambios en el controlador de administración en el futuro, ahora debe asegurarse de que esos cambios no rompan su ayuda.

Si su función auxiliar necesita un bit de datos particular que tenga el controlador de administración, puede pasarlo como parámetro de función desde el controlador. De esta manera, el ayudante es una dependencia del controlador en lugar de que el controlador sea una dependencia del ayudante.

Además, ese mensaje de error significa que cualquier cosa que esté llamando no se ha instanciado correctamente. Entonces probablemente estás haciendo algo como:

$this->load();

desde dentro del ayudante. Sin embargo, en el asistente,

$this
no está definido (de ahí el error 'no objeto'). CodeIgniter proporciona una forma de cargar modelos, bibliotecas y vistas desde fuera de un controlador. Pero, que yo sepa, no le permite hacer esto para los controladores. Sin embargo, está bien, por las razones mencionadas anteriormente. Hay que tener cuidado al introducir dependencias.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top