2011-12-18 9 views
0

Я новичок в CodeIgniter, и я пытаюсь выполнить некоторые простые примеры, чтобы понять, как они работают. Проблема в том, что я пытаюсь играть с простым контроллером, чтобы просто показать простое представление, которое просто говорит «Индекс!». в сильном шрифте. Я также использую .htaccess, чтобы избежать «index.php» перед именем контроллера. Для этого я использую mod_rewrite. Я использую:CodeIgniter: Что я делаю неправильно?

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond $1 !^(index\.php|files|assets|robots\.txt) 
RewriteRule ^(.*)$ ./index.php/$1 [L] 

в routes.php у меня есть:

$route['default_controller'] = "main"; 

, который говорит CodeIgniter, что я хочу использовать контроллер под названием main.php

который обладает

Вот мой полный контроллер:

class Main extends CI_Controller { 

public function index() { 
    $this->load->view('main'); 
} 


public function ingrid() { 
    $this->load->view('ingrid'); 
} 

public function remote() { 
    $this->load->view('remote'); 
} 

} 

внутри, и должен был выполнить внутренний контроллер 'main.php' внутри видов.

Все, кажется, хорошо, но он продолжает давать мне эту ошибку:

Severity: Notice 

Message: Undefined property: Main::$load 

Filename: controllers/main.php 

Line Number: 50 

Backtrace: 

File: /Users/sam/webroot/voipXX_client_care/application/controllers/main.php 
Line: 50 
Function: _exception_handler 

File: /Users/sam/webroot/voipXX_client_care/index.php 
Line: 260 
Function: require_once 

Проблема заключается в том, я не понимаю.

+0

Какие услуги хостинга вы используете? Вы развиваетесь на местном уровне? Имейте в виду, что при попытке удалить 'index.php' из ваших URI путем редактирования файла' .htaccess' зависит от услуги хостинга и хостинга. У каждого хостинга есть свои собственные руководства о том, как сделать это правильно для своих серверов. В остальном вам нужно показать нам весь ваш контроллер, чтобы мы могли видеть строку, где происходит ошибка. Пожалуйста, сообщите нам контроллер сверху вниз. – imlouisrussell

+0

Я развиваюсь локально. Я отредактировал мое сообщение выше с полным контроллером! – digfish

ответ

0

Возможно, ваш контроллер расширяет базовый контроллер?

Затем попробуйте вызвать parent :: Controller(); в конструкторе вашего класса Main().

+0

'parent :: __ construct();' для CI – Indranil

+0

Да, это так. Я добавил родительский :: Controller() в класс главного контроллера и сразу же сработал! Что мне кажется странным, так это то, что я основал свой контроллер с «welcome.php», который используется по умолчанию, когда вы разархивируете загруженный код, а «welcome.php» не обладает объявлением конструкции, но он работает без этой декларации! – digfish

0

Перепишите контроллер следующим образом:

class Main extends CI_Controller { 

    public function __construct(){ 
     parent::__construct(); 
    } 

    public function index() { 
     $this->load->view('main'); 
    } 

    public function ingrid() { 
     $this->load->view('ingrid'); 
    } 

    public function remote() { 
     $this->load->view('remote'); 
    } 
} 

Обратите внимание, я добавил:

public function __construct(){ 
     parent::__construct(); 
    } 
+0

Да, это точно! Но см. Мой комментарий к оригинальному сообщению о том, что я чувствую себя странно, что контроллер, который первоначально приходит с дистрибутивом welcome.php, не имеет объявленного конструктора и работает без проблем. – digfish

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