0

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

2
  • 1
    Suggestion: Create a base controller with that method and let your other controllers extend it. Commented Feb 19, 2017 at 19:07
  • 1
    or go for creation of helper or library.. Commented Feb 19, 2017 at 19:21

1 Answer 1

4

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.

Sign up to request clarification or add additional context in comments.

1 Comment

@LiveEn This is great answer, and also in addition you can check Avenirer's MY_Model that can help you to simplify interaction with various models you are using in application.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.