Instanciar un objeto de modelo en Codeigniter
Bueno, Codeigniter es un gran framework, lo utilizo mucho y cada vez me gusta más, pero me topé con la necesidad de instanciar un objeto del modelo en un controlador para pasarselo a la vista o trabajar con él.
Di unas vueltas hasta que lo hice asi:
En el modelo, en mi caso el modelo bk_usuario:
class Bk_usuario extends Model { var $usuario = null; function Bk_usuario($id){ //Llamando al contructor del Modelo parent::Model(); $ru = $this->db->get_where('bk_usuario',array('idbk_usuario'=>$id)); $this->usuario = $ru->row(); } function isSuper(){ return ($this->usuario->nivel==3); } function isAdmin(){ return ($this->usuario->nivel==2); } function isReserva(){ return ($this->usuario->nivel==1); } } |
Entonces desde un controlador que consume el modelo usuario:
class Inicio extends Controller { function Inicio(){ parent::Controller(); } function index(){ ##cargando models $this->load->model('booking/bk_usuario'); ##Aqui es donde instancio el modelo usuario con un new y pasando el id de usuario (en este ejemplo harcodeado, pero debe ser un dato variable) $usuario = new $this->bk_usuario('ddicami'); $datos['puede_ver'] = ( $usuario->isSuper() OR $usuario->isAdmin() ); $this->load->view('booking/header', $datos); $this->load->view('booking/index', $datos); } } |
Lo que logré es rellenar el atributo $usuario desde el contructor del objeto bk_usuario, instanciándolo con el id del usuario desde el controlador.
Si te ha gustado este post, suscríbete al feed.
Categorías: Code Igniter, Frames php, General


muchas gracias me ha sido de mucha utilidad.
Genial! a mi también me resultó util y no veía como hacerlo.
buena pana ..!!