2013-06-26 2 views
1

У меня есть два класса, по моему проекту CodeIgniter: Пользователи и профилиCodeIgniter вызова защищенный метод другого контроллера

пользователей:

class Users extends CI_Controller 
{ 
    ... 

профили:

class Profiles extends CI_Controller 
{ 
    protected function create_user_profile() 
    { 
     .... 
    } 
    ... 

Когда пользователь создается пользовательский контроллер, профиль должен быть создан немедленно. Таким образом, функция в Пользователях должна вызвать функцию create_user_profile. Теперь я задаю вопрос:

Если я делаю create_user_profile общедоступным, его можно назвать по URL-адресу. Но если я защищу его, то как его вызвать из User controller?

Есть ли лучший способ, чем перемещение create_user_profile от контроллера профилей до контроллера пользователей?

ответ

2

Попробуйте сделать библиотеку профилей вместо:

Библиотеки/profiles.php

class Profiles 
    { 
    protected $CI; 

    public function __construct() 
    { 
     $this->CI =& get_instance(); // Existing Code Igniter Instance 
    } 

    public function create_user_profile() 
    { 
     // Your Code Here 
     // can communicate back with CI by using $this->CI 
     // $this->CI->load->view(....); 
     // $this->CI->load->model(...); 
     // ETC 
    } 
    } 

Контроллеры/users.php

class Users extends CI_Controller 
    { 
    public function my_function(){ 
     $this->load->library('profiles'); 
     $this->profiles->create_user_profile();  
    } 
    } 
+2

В качестве альтернативы вы можете использовать модель, но я согласен, что библиотека является лучшим вариантом здесь. –

+0

У меня была опечатка в моем контроллере хе-хе, просто исправлена, чтобы избежать путаницы. Я большой пользователь Codeigniter, и я нахожу, что строю библиотеки практически для всего. оставляя мои модели для шаблонов баз данных. – Dave

+0

спасибо @BadWolf, я назвал модель «профиля» от 'user' controller, и больше не нужно вызывать какой-либо метод из' profile' controller. – tenfy

0

Поместите его в другой класс, не относящийся к веб-контроллеру. Затем вы можете использовать его везде.

+0

что класс не-веб-контроллер? – tenfy

+0

Общий класс, который не расширяет CI_Controller – faffaffaff

+0

, тогда вызов модели из него будет труднее – tenfy