【问题标题】:How to call Base Controllers Method in Codeigniter?如何在 Codeigniter 中调用基本控制器方法?
【发布时间】:2016-02-26 06:15:42
【问题描述】:

我在核心文件夹中定义了MY_Controller

然后我有两个控制器:

Admin_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

        }
    }

这是怎么做到的?

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    你可以按照这个:

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

    然后

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

    【讨论】:

    • 我知道这一点,但我不知道如何访问我的 Customer_Controller 中定义的方法
    【解决方案2】:

    让我给你一个建议。与其创建一个控制器并扩展它,不如创建一个库类。 然后在你想要的控制器中加载你的库。

    例如这里是你的库类文件。

        <?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 
            }
        }
    

    AND 在你的控制器中

    <?php
    
        class User extends CI_Controller
        {
    
            public function__construct()
            {
                parent::__construct();
            }
    
            public function index()
            {
                 $this->load->library('users');
                 $users = new users();
                 $userinfo = users->get_users();
                //Results from library
    
            }
        }
    

    【讨论】:

      【解决方案3】:

      你在你的用户控制器中像这样尝试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 
               }
      
          }
      }
      

      【讨论】:

      • 以及如何打印结果?
      【解决方案4】:

      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();
          }
      

      【讨论】:

        猜你喜欢
        • 2022-01-20
        • 2011-10-28
        • 2013-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-17
        • 1970-01-01
        相关资源
        最近更新 更多