2014-01-14 83 views
9

我有一個名爲home.php的控制器,其中有一個名爲podetails的函數。我想在另一個控制器user.php中調用此函數。
是否有可能這樣做?我已閱讀CI中的HMVC,但我想知道是否可以在不使用hmvc的情況下執行此操作?如何在codeigniter中的另一個控制器中調用一個控制器功能

+0

用示例解釋和使用 –

+5

我已經解釋得很清楚了。請再次閱讀該問題。 – user2936213

+0

請註明具體用途? –

回答

11

要:

在你只需要調用podetails()

假設控制器

請擴展控制器請按照此tutorial或看到下面的一些代碼。 private/public/protected


之間


差異使得在文件夾命名爲/application/core/MY_Controller.php

在該文件的文件都像

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class MY_Controller extends CI_Controller { 

    protected $data = Array(); //protected variables goes here its declaration 

    function __construct() { 

     parent::__construct(); 
     $this->output->enable_profiler(FALSE); // I keep this here so I dont have to manualy edit each controller to see profiler or not   
     $this->load->model('some_model'); //this can be also done in autoload... 
     //load helpers and everything here like form_helper etc 
    } 

    protected function protectedOne() { 

    } 

    public function publicOne() { 

    } 

    private function _privateOne() { 

    } 

    protected function render($view_file) { 

     $this->load->view('header_view'); 
     if ($this->_is_admin()) $this->load->view('admin_menu_view'); 

     $this->load->view($view_file . '_view', $this->data); //note all my view files are named <name>_view.php 
     $this->load->view('footer_view'); 

    } 

    private function _isAdmin() { 

     return TRUE; 

    } 

} 

,現在一些代碼在任何你現有的控制器只編輯1或2第二行,其中

class <controller_name> extends MY_Controller { 

和你做

也注意到,所有的變量是指在視圖中使用在某些控制器的這個變量(array) $this->data

例如由MY_Controller擴展

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class About extends MY_Controller { 

    public function __construct() { 

     parent::__construct(); 

    } 

    public function index() { 
     $this->data['today'] = date('Y-m-d'); //in view it will be $today; 
     $this->render('page/about_us'); //calling common function declared in MY_Controller 
    } 

} 
+0

謝謝你好多了:) – user2936213

+0

不錯的解決方案。謝謝 – user2899728

2

podetails()寫成助手文件中的函數。

然後在兩個控制器中加載該助手。

--controller 1--

function podetails() 
{ 
    podetails(); // will call function in helper ; 
} 
--controller

2--

function podetails() 
{ 
    podetails(); // will call function in helper ; 
} 
相關問題