2015-11-25 48 views
1

您好,提前感謝您。我用了笨3.0方法從兩個不同的控制器調用Codeigniter 3

類管理擴展是CI_Controller {

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

} 
public function addpeople() { 
    insert in into people values('','pramod','emp0784'); 
} 

}

以上是我的管理控制器,其中i插入一些記錄表人

class Employee extends CI_Controller { 

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

} 
public function addpeople() { 
    insert in into people values('','pramod','emp0784'); 
} 

}

這在我執行相同的操作,管理控制器中的另一個控制器,但它喜歡寫相同的代碼兩次,我想重用員工控制器的代碼。另一種方式,我發現在員工重定向(../ admin/addpeole),但它改變了網址。有沒有其他方式可以在員工的管理員控制器中重複使用相同的代碼而無需更改url。

+1

瞭解如何使用模型。這種插入應該在你的模型發生,你可以調用來自不同控制器的相同型號 – Svetoslav

回答

0

試試這個 在core中創建一個名爲MY_Controller.php的文件並從CI_Controller擴展。

<?php 
if (!defined('BASEPATH')) 
    exit('No direct script access allowed'); 
class Admin_Controller extends CI_Controller { 
    public function __construct() { 
     parent::__construct();   
    }  
    public function addpeople() { 
     insert in into people values('','pramod','emp0784'); 
    } 
} 
?> 

編寫函數在該控制器

擴展Employees形式在芯中創建的控制器。

class Employee extends Admin_controller{ 
     public function __construct() { 
      parent::__construct(); 

     } 

    function abc() { 
     $this->addpeople();// this will insert the values for you 
    } 
} 
0

控制器不應該直接與數據庫進行通信,您應該使用模型與數據庫進行通信,而你的控制器應與當時的模型直接或通過視圖發送輸出進行通信。

您可以創建application/models下一個模型你必須給它不與控制器衝突的名稱,以便大多數人在詞尾加_model_m

如:application/models/Employees_model.php

它應該延伸CI_Model代碼會是這樣的。

class Employees_model extends CI_Model { 
    public function add_employee($data) { 
    // insert code goes here 
    } 
] 

然後在你的控制器,你加載模型&發送的$ DATA來創建一個僱員

class Employees extends CI_Controller { 
    public function create() { 
     $this->load->model('employees_model'); 
     $this->employees_model->add_employee($this->input->post()); 
    } 
} 
相關問題