简体   繁体   English

Codeigniter中的全局控制器?

[英]global controller in codeigniter?

Is there a way in codeigniter to define a global function that can be called in all controllers easily? Codeigniter中是否有一种方法可以定义可以在所有控制器中轻松调用的全局函数?

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 我现在正在做什么,我已经使用以下函数自动加载了模型Latest_model

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. Codeigniter的文档是一个很好的起点。

In short you should create your base controller named MY_Controller under application/core/ folder. 简而言之,您应该在application/core/文件夹下创建名为MY_Controller的基本控制器。 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 . 然后,您可以从所有控制器使用$this->data访问data数组。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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