2014-01-14 5 views
9

У меня есть один контроллер с именем home.php, в котором есть функция с именем podetails. Я хочу вызвать эту функцию в другом контроллере user.php.
Можно ли это сделать? Я прочитал около HMVC в CI, но я хочу знать, можно ли обойтись без использования hmvc?Как вызвать функцию одного контроллера в другом контроллере в codeigniter

+0

объясните пример и используйте –

+5

Я объяснил это очень четко. Пожалуйста, прочитайте вопрос еще раз. – user2936213

+0

Укажите, что вам нужно? –

ответ

11

Для продлить контроллер, пожалуйста, либо следуйте этому 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() как функция в вспомогательном файле.

затем загрузите этот помощник в оба контроллера.

в контроллере вы просто звоните podetails()

предполагают:

--controller 1--

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

--controller 2--

function podetails() 
{ 
    podetails(); // will call function in helper ; 
} 
Смежные вопросы