my_loader - php con codeigniter
CodeIgniter HMVC object_to_array() error (5)
Agregue estas líneas en application / third_party / MX / Loader.php después de la línea 307,
protected function _ci_object_to_array($object)
{
return is_object($object) ? get_object_vars($object) : $object;
}
Sin embargo, para 3.1.3 HMVC no funciona.
Mejor suerte.
HMVC: https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/downloads
Después de descargar CI y copiar en el HMVC, aparece el siguiente error:
Se encontró una excepción no detectada
Error de tecleado
Mensaje: Llamada a método no definido MY_Loader :: _ ci_object_to_array ()
Nombre de archivo: /Users/k1ut2/Sites/nine.dev/application/third_party/MX/Loader.php
Número de línea: 300
Backtrace:
Archivo: /Users/k1ut2/Sites/nine.dev/application/controllers/Welcome.php Línea: 23 Función: ver
Archivo: /Users/k1ut2/Sites/nine.dev/index.php Línea: 315 Función: require_once
Encontró esto Use este lugar en application / core / MY_Loader.php
<?php (defined(''BASEPATH'')) OR exit(''No direct script access allowed'');
/* load the MX_Loader class */
require APPPATH."third_party/MX/Loader.php";
class MY_Loader extends MX_Loader
{
/** Load a module view **/
public function view($view, $vars = array(), $return = FALSE)
{
list($path, $_view) = Modules::find($view, $this->_module, ''views/'');
if ($path != FALSE)
{
$this->_ci_view_paths = array($path => TRUE) + $this->_ci_view_paths;
$view = $_view;
}
return $this->_ci_load(array(''_ci_view'' => $view, ''_ci_vars'' => ((method_exists($this,''_ci_object_to_array'')) ? $this->_ci_object_to_array($vars) : $this->_ci_prepare_view_vars($vars)), ''_ci_return'' => $return));
}
}
HMVC no funciona con 3.1.3 (versión actual). Pero funciona con todas las versiones hasta 3.1.2. Sólo probé esto desde 3.0.0 en adelante.
Simplemente agregando esto aquí ya que el enlace proporcionado por Clasyk no está funcionando actualmente ...
La versión corta de ese hilo se reduce a esto ...
En application / third_party / MX / Loader.php puedes hacer lo siguiente ...
En public function view($view, $vars = array(), $return = FALSE)
Busque ... (Línea 300)
return $this->_ci_load(array(''_ci_view'' => $view, ''_ci_vars'' => $this->_ci_object_to_array($vars), ''_ci_return'' => $return));
Reemplace esto con
if (method_exists($this, ''_ci_object_to_array''))
{
return $this->_ci_load(array(''_ci_view'' => $view, ''_ci_vars'' => $this->_ci_object_to_array($vars), ''_ci_return'' => $return));
} else {
return $this->_ci_load(array(''_ci_view'' => $view, ''_ci_vars'' => $this->_ci_prepare_view_vars($vars), ''_ci_return'' => $return));
}
Es el resultado de un "pequeño" cambio indocumentado que implementaron los desarrolladores de CI, ¡lo cual está bien!
Hay una solicitud de extracción en Wiredesignz que espera acción para que él lo sepa ...
Mientras tanto, puede implementar el "comando" anterior y volver a la codificación :)
Tengo la solución. Esto está funcionando para mí. En la línea 300 de application / third_party / MX / Loader.php
Esta línea genera un error con CI 3.1.3.
return $this->_ci_load(array(''_ci_view'' => $view, ''_ci_vars'' => $this->_ci_object_to_array($vars), ''_ci_return'' => $return));
Reemplazar con esta línea.
return $this->_ci_load(array(''_ci_view'' => $view, ''_ci_vars'' => $this->_ci_prepare_view_vars($vars), ''_ci_return'' => $return));
}