Estoy siguiendo el tutorial del Codeigniter website sobre cómo hacer una sección de noticias. En este momento estoy recibiendo un mensaje de propiedad indefinido en la línea 13.Propiedad indefinida de Codeigniter, o cómo mi controlador dejará de preocuparse y aprenderá a amar el modelo
Aquí está mi modelo. aplicaciones/modelos/articles_model
<?php
class Articles_model extends CI_Model{
public function __construct(){
$this->load->database();
}
public function get_article($slug = False){
if ($slug === FALSE){
$query = $this->db->get('articles');
return $query->result_array();
}
$query = $this->db->get('articles');
return $query->result_array();
}
$query = $this->db->get_where('articles', array('slug' => $slug));
return $query->row_array();
}
Y aquí es el controlador. aplicaciones/controladores/articles.php
<?php
class Articles extends CI_Controller{
public function __contruct(){
parent::__construct();
$this->load->model('Articles_model');
}
public function index(){
//Message: Undefined property Articles::Articles_model
$data['articles'] = $this->Articles_model->get_article();
$data['title'] = "Archive";
$this->load->view('templates/header', $data);
$this->load->view('articles/index', $data);
$this->load->view('templates/footer');
}
public function view($slug){
$data['articles'] = $this->Articles_model->get_article($slug);
if(empty($data['articles'])){
show_404();
}
$data['title'] = $data['articles']['title'];
$this->load->view('templates/header', $data);
$this->load->view('articles/view', $data);
$this->load->view('templates/footer');
}
}
Estas son todas las rutas que tengo de configuración. aplicaciones/config/routes.php
$route['articles/(:any)'] = 'articles/view/$1';
$route['articles'] = 'articles';
$route['default_controller'] = 'pages/view';
$route['(:any)'] = 'pages/view/$1';
Mi base de datos se parece a esto
mysql> describe articles
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| title | varchar(128) | NO | | NULL | |
| slug | varchar(128) | NO | MUL | NULL | |
| text | text | NO | | NULL | |
+-------+--------------+------+-----+---------+----------------+
He intentado usar la propiedad con un capital de primera letra, $this->Articles_model
, y no, $this->articles_model
.
¿Me estoy perdiendo algo estúpido? Si es así, ¿qué es?
Si no es estúpido, ¿cómo puedo depurar?
EDITAR
que la salida de print_r, según los comentarios, no contenía "Articles_model". Lo primero está por encima de mi cabeza, pero CTRL-F no lo está. También los registros de Apache mencionan esto ...
[Sun Sep 23 13:19:30 2012] [error] [client 127.0.0.1] PHP Fatal error: Call to a member function get_article() on a non-object in /home/noel/dev/web/
ci/CodeIgniter_2.1.2/application/controllers/articles.php on line 13
EDIT1
pensé que me fijo, pero no, ver el comentario en mi respuesta . Por algún motivo, $this->article_model
no es un objeto.
¿Por qué? He estado en una Feria Mundial, un Picnic y un Rodeo, y esa es la cosa más estúpida que he oído venir a través de un par de auriculares. ¿Estás seguro de que tienes los códigos de hoy?
En la línea 12, justo antes de recibir el error. Haz un 'print_r ($ this);'. En el primer nivel de las propiedades del objeto (con suerte, esto no está por encima de tu cabeza, aunque puede ser ...) busca "Articles_model". Si no está seguro de si es el primer nivel, intente actualizar su pregunta con algunos de los resultados de 'print_r' para que podamos ayudarlo más. – Webnet
Hecho. OP actualizada Gracias. Todavía no hay alegría. – noel
Esto, amigos, es la forma en que titula una pregunta. – SomeKittens