php - query - update codeigniter example
CodeIgniter PHP Model Access "No se puede ubicar el modelo que se ha especificado" (13)
Agregando a @jakentus respuesta, a continuación es lo que funcionó para mí:
Cambie el nombre del archivo en el paquete de modelos a
Logon_model.php
(mayúscula de la primera letra como @jakentus dijo correctamente)Cambie el nombre de la clase como el nombre del archivo, es decir,
class Logon_model extends CI_Model
Cambie el nombre en el método de carga también como
$this->load->model(''Logon_model'');
Espero que esto ayude. Feliz codificación. :)
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:
<?php if ( ! defined(''BASEPATH'')) exit(''No direct script access allowed'');
class Logon_model extends CI_Model
{
public function __construct()
{
parent::__construct();
}
...
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.
Asegurarse:
- Primera letra mayúscula
- Nombre exacto del nombre de clase como nombre de archivo
- 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
Cambiar el nombre del nombre del modelo que comienza con mayúsculas funciona. Ejemplo: Login_model.php en lugar de login_model.php
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
Esto es lo que debería ser un modelo: asegúrese de que el suyo sea así.
<?php
class Logon_model extends CI_Model {
function __construct()
{
parent::__construct();
}
function myFunc()
{
// do something
}
}
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.
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'';
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'');
Los modelos deben nombrarse y llamarse con la primera letra del nombre del modelo en mayúscula y el resto 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.
Resuelvo esto de esta manera:
- Renombre el archivo do Page_model.php
- El nombre de la clase a Page_model se extiende ...
- Llamo a autocarga:
$autoload[''model''] = array(''Page_model''=>''page'');
Funciona bien ... Espero ayuda.
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
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
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