2012-05-09 1 views
3

У меня есть следующий код:Код Igniter - вызов метода внутри модели?

class Badge extends CI_Model 
{ 
    public function foo() 
    { 
     echo $this->bar('world'); 
    } 

    public function bar($word) 
    { 
     return $word; 
    } 
} 

Но он всегда дает мне ошибку на линии где эхо $ this-> бар («мир»);

Призыв к неопределенному методу (......)

+1

Приведенный выше код будет работать, если вы правильно загрузите свою модель и правильно назовете 'foo()'. Вы уверены, что это так? Где вы загружаете модель и вызываете 'foo()'? И это ваш фактический код выше или упрощенная версия? Если это не ваш фактический код, вставьте его вместо этого. –

ответ

8

Вы не загружая модель внутри контроллера:

public function test() 
    { 
     $this->load->model('badge'); 
     $this->badge->foo(); 
    } 

Поскольку код работает - Я только что испытал его, вставив с помощью вашей модели неотредактированный:

class Badge extends CI_Model 
{ 
    public function foo() 
    { 
     echo $this->bar('world'); 
    } 

    public function bar($word) 
    { 
     return $word; 
    } 
} 

мощность:

world 
2

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

class Badge extends CI_Model 
{ 
    public function foo() 
    { 
     $CI =& get_instance(); 

     echo $CI->Badge->bar('world'); 
    } 

    public function bar($word) 
    { 
     return $word; 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^