2012-03-13 3 views
2

Я хочу расширить базовый контроллер самостоятельно. Это код файла MY_Secure.php, который я поставил в application/librariesCodeIgniter basic controller extends

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

Class MY_Secure extends CI_Controller { 
    public function __construct() { 
    parent::__construct(); 
    if(!$this->session->userdata('status') == 'admin') { 
     $data['message'] = '<p class="error">You shold login in admin area</p>'; 
     $this->load->view('admin/login', $data); 
    } 
    } 
} 
?> 

А вот мой контроллер в application/controllers/category.php

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

class Category extends MY_Secure { 

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

public function index() 
{ 
$data['login'] = $this->session->userdata('login'); 
$data['status'] = $this->session->userdata('status'); 

$this->load->model('categories_model'); 
$data['main_categories'] = $this->categories_model->get_main_categories(); 

$this->load->view('admin/headers/main', $data); 
$this->load->view('admin/category'); 
$this->load->view('admin/footer/main'); 
} 
?> 

Но у меня есть ошибка Fatal error: Class 'MY_Secure' not found in Z:\home\ci.local\www\application\controllers\admin\category.php on line 3 Как я могу избежать этой ошибки? Что я делаю неправильно?

ответ

6

http://codeigniter.com/forums/viewthread/182186/#862394

... так что положить MY_Secure.php MY_Controller.php в заявке/сердцевиной

+0

That's Meen, что я мог иметь только один контроллер, который может расширяет базовые контроллеры? –

+0

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

+1

Нет, у вас может быть столько контроллеров, сколько вы хотите. Но * расширение * основной контроллер - это не то же самое, что создавать * новые * контроллеры. http://stackoverflow.com/questions/5613767/codeigniter-ci-controller-vs-controller http://codeigniter.com/user_guide/general/controllers.html – stormdrain

0

И вы не можете назвать ваш контроллер расширяет 'MY_Secure', вы должны назвать его 'MY_Controller'. Затем удлините его

class Category extends MY_Controller 
+0

Хмммм ... Нет, извините. – Flawyte

0

Я думаю, что проблема заключается в местоположении MY_Secure.php. Префикс MY_ работает, если вы не изменили его в конфиге.

Класс MY_Secure должен быть сохранен в папке «Основные приложения» для работы в CodeIgniter 2.O не в папке «Библиотеки».

1

Там нет необходимого условия для сохранения и имя его как MY_Controller. Вы можете назвать его, например: Mysite_Controller, если хотите.

Пожалуйста, разместите свой класс в папке application/core, а затем добавьте этот класс из класса контроллера.

Но для того, чтобы работать должным образом, вам необходимо изменить конфигурационный файл значение:

$config['subclass_prefix'] = 'Mysite_'; // default it is 'MY_' 
Смежные вопросы