CodeIgniter PHP Model Access “No se puede ubicar el modelo que se ha especificado”

He estado intentando cargar algunos modelos para este sitio web que estoy construyendo. Sin embargo, por un motivo desconocido, traerá el siguiente error:

An Error Was Encountered Unable to locate the model you have specified: logon_model 

Ahora, he hecho mi investigación. El problema sería que IC procesa los nombres de los archivos en minúsculas. Sin embargo, mi archivo y la llamada a archivos están en minúsculas, como se muestra aquí:

 echo "VALIDATING"; // Validation passed. Off we go to account info verification from AA's database. God help us all. $this->load->model('logon_model'); echo "FOUND MODEL"; $res = $this->logon_model->verify_user($this->input->post('username'),$this->input->post('password')); echo $this->input->post('username'); echo $this->input->post('password'); 

La ejecución no llega al “MODELO ENCONTRADO”, por lo que se detiene en la carga del modelo. He tratado de usar:

  $this->load->model(site_url('logon_model')); 

Sin resultados ¿Necesitas mencionar que el archivo del modelo está ubicado correctamente en la carpeta del modelo correcto?

Cómo puedo arreglar esto ?

EDITAR: encabezado para el archivo de modelo:

 class Logon_model extends CI_Model { .... 

Al crear modelos, debe colocar el archivo en la application/models/ y nombrar el archivo en minúsculas, como logon_model.php

El logon_model.php debe contener lo siguiente:

  

Ahora, lo que puede hacer, para probar si su modelo de aplicación es alcanzable, es intentar abrirlo en el navegador, por ejemplo:
http://example.org/application/models/logon_model.php

Si ve el texto No se permite el acceso directo a las secuencias de comandos , significa que debe presionar el archivo correcto (si tiene dudas, intente escribir algo más en la salida () en la primera línea).

En segundo lugar, para cargar el modelo en sus controladores, debe poder hacer esto:

 public function index() { $this->load->model('logon_model'); ... } 

Si todo lo anterior sale como se espera, comenzaría a buscar permisos de archivos y / o enlaces simbólicos si está utilizando alguno.

Yo uso codeigniter 3+. Tuve el mismo problema y en mi caso cambié el nombre del archivo de modelo a partir del caso de uppser.

Logon_model.php

Esto es lo que debería ser un modelo: asegúrese de que el suyo sea así.

   

tenga en cuenta el nombre de la clase en mayúscula.

Para cargarlo usa:

 $this->load->model('logon_model'); 

tenga en cuenta todas las minúsculas.

Resuelvo esto de esta manera:

  1. Renombre el archivo do Page_model.php
  2. El nombre de la clase a Page_model se extiende …
  3. Llamo a autocarga: $autoload['model'] = array('Page_model'=>'page');

Funciona bien … Espero ayuda.

En CodeIgniter 3.0-dev (obténgalo de github), esto no funciona porque el CI se busca como primera letra en mayúscula.

Puede encontrar el código en system / core / Loader.php línea 282 o abajo:

 $model = ucfirst(strtolower($model)); foreach ($this->_ci_model_paths as $mod_path) { if ( ! file_exists($mod_path.'models/'.$path.$model.'.php')) { continue; } require_once($mod_path.'models/'.$path.$model.'.php'); $CI->$name = new $model(); $this->_ci_models[] = $name; return $this; } 

Esto significa que necesitamos crear el archivo con el siguiente nombre en application / models / Logon_mode.php

Los modelos deben nombrarse y llamarse con la primera letra del nombre del modelo en mayúscula y el rest en minúscula.

Por ejemplo: $this->load->model('Logon_model');

y:

 class Logon_model extends CI_Model { ... 

Pero tiene razón sobre el nombre del archivo.

La primera letra del nombre del archivo y de la clase debe estar en mayúscula.

Tu clase de modelo será

clase Logon_model amplía CI_Model

y el nombre del archivo será Logon_model.php

Acceda desde su controlador como

$ this-> load-> model (‘Logon_model’);

Agregando a @jakentus respuesta, a continuación es lo que funcionó para mí:

  1. Cambie el nombre del archivo en el paquete de modelos a Logon_model.php (mayúscula de la primera letra como @jakentus dijo correctamente)

  2. Cambie el nombre de la clase como el nombre del archivo, es decir,

    class Logon_model extends CI_Model

  3. Cambie el nombre en el método de carga también como

    $this->load->model('Logon_model');

Espero que esto ayude. Feliz encoding. 🙂

Experimenté el mismo problema, pero lo solucioné modificando mi archivo application / config / routes.php.

Realicé algunas reestructuraciones en mis directorios de controladores y me olvidé de efectuarlas en el archivo de rutas.

Más temprano:

 $route['application/apply'] = 'ex/application/account/create'; 

y ahora:

$route['application/apply'] = 'application/account/create';

Cambiar el nombre del nombre del modelo que comienza con mayúsculas funciona. Ejemplo: Login_model.php en lugar de login_model.php

debe cambiar el nombre de su modelo, primera letra capital. en la letra pequeña localhost funciona correctamente pero en línea esto no funciona. para exa:

 common_model.php 

lo reemplazó por

 Common_model.php 

Solo añadiendo mi problema tuve:

 $this->load->model("planning/plan_model.php"); 

y el .php debería estar allí, por lo que debería haber sido:

 $this->load->model("planning/plan_model"); 

Espero que esto ayude a alguien

Asegurarse:

  1. Primera letra mayúscula
  2. Nombre exacto del nombre de clase como nombre de archivo
  3. Asegúrate de que tu archivo termine con la extensión .php

En mi caso, tuve 1 y 2 correctos, pero olvidé nombrar mi archivo con la extensión .php. Cómo lo olvidé, ni idea, pero seguro que me costó trabajo intentar resolver el problema