如何在Codeigniter中调用基本控制器方法?

时间:2016-02-26 06:15:42

标签: php codeigniter

我已在我的核心文件夹中定义 MY_ Controller

然后我有两个控制器:

Admin_Controller

Customer_Controller

现在我想在我的Customer_Controller中添加一个查询,其结果是我可以访问扩展到Customer_Controllers的所有控制器。

我已将此代码放在Customer_Controller

                    public function get_users()
                    {
                        $id = $this->session->userdata('id');
                        $this->db->select('*');
                        $this->db->join('tenant','tenant.id = sites.tenant_id');
                        $this->db->where('tenant.id',$id);
                        $this->db->from('sites');   
                        $query = $this->db->get();
                        $result = $query->result(); 


                        $sitedata = json_decode(json_encode($result));

                        $this->session->set_userdata($sitedata);
                    }

现在,当我有一个类似这样的孩子课时

<?php

    class User extends Customer_Controller
    {

        public function__construct()
        {
            parent::__construct();
        }

        public function index()
        {

            //Get Results from Customer_Controller

        }
    }

怎么做?

4 个答案:

答案 0 :(得分:2)

你可以这样说:

class Customer_Controller extends My_Controller
{
 public function customer()
  {
     return 'costomers';
  }

}

然后

class User extends Customer_Controller
{
  //call the function from Customer_Controller
   $this->customer();
}

答案 1 :(得分:1)

您在用户控制器

中尝试get_instance()
  public function get_users()
                {
                    $id = $this->session->userdata('id');
                    $this->db->select('*');
                    $this->db->join('tenant','tenant.id = sites.tenant_id');
                    $this->db->where('tenant.id',$id);
                    $this->db->from('sites');   
                    $query = $this->db->get();
                    $result = $query->result(); 


                    $sitedata = json_decode(json_encode($result));

                    $this->session->set_userdata($sitedata);
                 return $result;
                }

class User extends CI_controller
{

    public function__construct()
    {
        parent::__construct();
    }

    public function index()
    {

        $CI=&get_instance();
        $result=$CI->get_users();
        foreach($result as $row)
        { 
          echo $row->id;//here add you table field name for id 
         }

    }
}

答案 2 :(得分:1)

我给你一个建议。为什么不创建一个库类,而不是创建一个控制器并扩展它。 然后将库加载到所需的控制器中。

例如,这是您的库类文件。

stirng mypath = stirng.Format("~/EmailStyle/TD-emailForCus.html");
 using (StreamReader reader = new StreamReader(Server.MapPath(mypath)))
                {
                    body = reader.ReadToEnd();
                }

在你的控制器中

    <?php

    class users{

        private $session;
        public function __construct(){
            $CI =& get_instance();
            $this->session=$CI->session;
        }

        public function get_users()
        {
              // do the code and return the 
        }
    }

答案 3 :(得分:1)

Codeigniter是MVC框架。 所以你将把get_users放在模型部分。 示例:您必须在models文件夹中创建custom_model.php。

 <?php 
  class custom_model extends CI_Model {

      function __construct()
      {
          parent::__construct();
      }
      public function get_users($id)
      {
          $this->db->select('*');
          $this->db->join('tenant','tenant.id = sites.tenant_id');
          $this->db->where('tenant.id',$id);
          $this->db->from('sites');   
          $query = $this->db->get();
          $result = $query->result(); 
          return $result;
      }
   }
   ?>

下一步:重新制作custom_controller。

public function get_users()
{
   $id = $this->session->userdata('id');
   $this->load->model('custom_model');
   $result=$this->cutom_model->get_users($id);
   $sitedata = json_decode(json_encode($result));
   $this->session->set_userdata($sitedata);

}

和下一步:

class User extends Customer_Controller
{

    public function__construct()
    {
        parent::__construct();
    }

    public function index()
    {

        //

    }
    public function get_users(){
         parent::get_users();
    }