2017-01-19 2 views
1

Попытка заполнить параметры в раскрывающемся списке, извлекая данные из базы данных в представление. Однако я получаю ошибку:Ошибка CodeIgniter при вызове функции библиотеки

сообщение: Не определено свойство: CI_Loader :: $ AdminDataHelper

Имя файла: формы/user.php

Фатальная ошибка: Вызов функции-члена get_colleges() на не- объект в /ci/app/views/includes/forms/user.php на линии 54

<select id="college" name="college-selector" > 
     <?php 
       foreach ($this->AdminDataHelper->get_colleges() as $colleges) 
       { 
       echo "<option value='".$colleges['id']."'>".$colleges['description']."</option>"; 
       } 
     ?>     
    </select> 

Моя библиотека классов: -

class AdminDataHelper { 

public function __construct() 
{ 
    $this->CI =& get_instance(); 
    $this->CI->load->model('admin_m');  
} 

public function get_colleges(){ 
    return $this->CI->admin_m->get_colleges(); 
} 

Моя модель: -

class Admin_M extends CI_Model { 

function __construct() 
{ 
    // Call the Model constructor 
    parent::__construct(); 
    $this->global_db = $this->load->database('global', TRUE); 
} 

public function get_colleges() 
{ 
    $this->global_db->select('id, description'); 
    $this->global_db->from('College'); 
    $result = $this->global_db->get(); 
    $data=$result->result_array(); 
    return $data; 
} 

В моем файле autoload.php я добавил библиотеку.

$autoload['libraries'] = array('database', 'form_validation', 'AdminDataHelper'); 
+1

Я думаю, вам нужно внимательно прочитать документы. Вы не можете использовать такое имя. Только первая буква имени файла имеет заглавные буквы, а затем при обращении к ней используется весь нижний регистр. 'Admindatahelper.php', а затем' $ this-> admindatahelper-> '. Следуйте приведенным ниже примерам и ознакомьтесь с разделом «соглашения об именах»: https://www.codeigniter.com/user_guide/general/creating_libraries.html#naming-conventions – Sparky

+0

Я также не думаю, что вы можете вызвать библиотеку изнутри View , Вам нужно вызвать его из своего контроллера и только отправить данные в свой вид. – Sparky

+0

Вы правы. Проблема заключалась в соглашении об именах. благодаря – jstandshigh

ответ

1

Вы должны использовать Model в этом случае вместо использования Library, однако это будет работать:

$this->adminDataHelper->get_colleges(); 

первый символ должен начинаться с буквы в нижнем регистре.

2

Carefully read the docs. Вы не можете использовать такое имя. Только первая буква имени файла имеет заглавные буквы, а затем при обращении к ней используется весь нижний регистр.

Следуйте примеры и в разделе «соглашение об именовании»:

  • File names must be capitalized. For example: Myclass.php
  • Class declarations must be capitalized. For example: class Myclass
  • Class names and file names must match.

Admindatahelper.php и $this->admindatahelper

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