简体   繁体   中英

global controller in codeigniter?

Is there a way in codeigniter to define a global function that can be called in all controllers easily?

I have a application that will show all latest users who have registered on the app.

what im doing now is, i have autoloaded a model Latest_model with the below function

function new_users()
{
  $this->db->select('*');

  $this->db->from('users');
  $this->db->order_by('id', 'DESC'); 
  $this->db->limit('5');

  $query = $this->db->get();
  return $query->result_array();

}

and on all the controllers, at the beginning i call this model

$data['new'] = $this->Latest_model->new_users();

It works but, i need to repeat this in all the functions.

So what would be the best way to achieve this?

Any help will be appreciated

You can always extend default controller with new functionality. Codeigniter's documentation is the good place to start.

In short you should create your base controller named MY_Controller under application/core/ folder. Then you can place inside this file some code like this:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Controller extends CI_Controller {

    protected $data = [];

    function __construct() {
        parent::__construct();

        $this->data['new'] = $this->Latest_model->new_users();
    }
}

Then from all your controllers you can access the data array with $this->data .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM