2016-04-28 7 views
0

Я начинаю начинаю с codeigniter и пытаюсь создать пользовательскую библиотеку, которую я написал для загрузки. Я установил CI для запуска веб-сайта с помощью контроллера «check_login». содержимое этого файла следующим образом:codeigniter пользовательская библиотека не загружается

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

class Check_login extends CI_Controller { 
    public function __construct(){ 
     parent::__construct(); 
     $this->load->library('check_login'); 
    } 

    function index(){ 
     $this->check_login->checker(); 
    } 
} 

Библиотека «check_login» это был поставлен в CI/application/libraries/ и содержит следующий скрипт:

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

class Check_Login { 
    public function cheker(){ 
     //$CI =& get_instance(); 
     $is_logged_in = $this->session->userdata('is_logged_in'); 
     if(!isset($is_logged_in) || $is_logged_in != true){ 
      $this->load->view('welcome_message'); 
     }  
    } 

} 

Я также попытался с помощью $CI =& get_instance(); вместо $this, а также попытался добавить имя библиотеки в файл autoload config, чтобы узнать, работает ли она. Результат, который отображается в браузере, выглядит следующим образом: The Output in image Я хотел бы знать, что заставляет мою библиотеку не загружаться, и когда я должен использовать get_instance(); вместо $ this. Заранее большое спасибо.

+0

Я также просмотрел приведенную ниже ссылку, но ничего не могу понять: http: //stackoverflow.com/questions/20250061/codeigniter-custom-library-not-loading – Tower

+0

вы не можете загружать представление в библиотеку из библиотеки просто верните $ is_logged_in и используйте это, если вы cogitation в своем контроллере. –

+0

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

ответ

0

Похоже, я очень мало знаю о PHP. Я звонил в библиотеку, не присваивая ее значение переменной. Поэтому в индексной функции контроллера я должен изменить команду на: $q = $this->check_login->checker();echo $q;

0

Просто измените название своего класса на Check_login или что-нибудь другое с нижним регистром. И вы звоните $this->check_login->checker();, где, как и в вашей библиотеке ваше имя функции cheker()

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

class Check_login { 
    public function __construct() 
    { 
     $CI =& get_instance(); 
    } 
    public function cheker() 
    { 
     $is_logged_in = $this->session->userdata('is_logged_in'); 
     if(!isset($is_logged_in) || $is_logged_in != true){ 
      $this->load->view('welcome_message'); 
    }  
} 

Почему $ CI = & get_instance(); Назначение по ссылке позволяет использовать исходный объект CodeIgniter, а не создавать его копию.