2011-07-20 51 views
5

Tôi đã mở rộng bộ điều khiển CodeIgniter bằng cách thêm MY_Controller.php vào thư mục Application/Core. Nó hoạt động tốt, nhưng bây giờ khi tôi thêm mã sau đây trên error_404.php trang trong Application/errors, tôi nhận được lỗi.CodeIgniter: Class 'CI_Controller' không tìm thấy

Mã vấn đề gây:

<?php $ci =& get_instance();?> 
<?php $this->ci->load->view('header')?> 

Lỗi:

Fatal error: Class 'CI_Controller' not found in path\to\system\core\CodeIgniter.php on line 231 

Dòng 231 của system\core\CodeIgniter.php là:

function &get_instance() 
    { 
     return CI_Controller::get_instance(); 
    } 

Làm thế nào tôi có thể sửa lỗi này để Tôi có thể tải vie w trong error_404.php mà không thay đổi bất cứ điều gì trong các tập tin hệ thống.

PS. Tôi đang sử dụng phiên bản mới nhất.

Cảm ơn.

Trả lời

4

Tôi không nghĩ rằng CI_Controller được tải. Lớp Ngoại lệ đang xử lý đầu ra trang 404 bằng cách sử dụng một include.

Trong những ngày cũ, tôi thường sử dụng thẳng include s để ghép mẫu lại với nhau hoặc thực hiện yêu cầu file_get_contents() hoặc cURL tới URL trang 404 của tôi, nhưng cuối cùng họ đã làm điều gì đó về nó. Trong 2.0, bạn có thể định nghĩa một tùy chỉnh trang 404 trong routes.php:

$route['404_override'] = 'controller/method/parameter'; 

Nó vẫn not a perfect solution, nhưng cách đơn giản nhất hiện nay là chỉ để sử dụng các tuyến đường.

Lưu ý rằng base_url()."controller/method/parameter" phải là url hợp lệ và bạn nên đảm bảo đặt tiêu đề 404 trong bộ điều khiển cũng xuất ra trang (không được thực hiện tự động vì một số lý do).

+0

Nếu bạn đang sử dụng Composer để tự động tải, lỗi này cũng có thể do thư mục nhà cung cấp bị thiếu. Trong trường hợp này, khắc phục bằng cách chạy 'composer install' trên máy chủ của bạn (được khuyến nghị) hoặc tải lên qua FTP không thể chạy lệnh trên máy chủ của bạn. –

0

Hãy thử:

<?php $ci =& get_instance();?> 
<?php $ci->load->view('header')?> 

Khi bạn đã gán trường hợp của CI đến $ ci bạn chỉ có thể sử dụng $ ci-> tải-> view ('tiêu đề) trong suốt tập tin của bạn.

+0

Tôi đã thử điều đó, không hoạt động. Lỗi được gây ra bởi dòng đầu tiên, vì nó vẫn giữ nguyên ngay cả khi tôi xóa dòng thứ hai. – Roman

4

Tôi có vấn đề này khi sau khi CodeIgniter hướng dẫn ở đây: http://codeigniter.com/user_guide/tutorial/static_pages.html

Vấn đề là tôi đã cố gắng để truy cập vào url:

localhost/CodeIgniter_2.1.1/application/controllers/pages.php

thay vì địa chỉ url:

localhost/CodeIgniter_2.1.1/index.php/trang/xem

Tôi biết nó đã được khoảng 18 tháng kể từ khi bạn hỏi câu hỏi đó nhưng có lẽ nó có thể giúp người khác :)

4

hoặc bạn có thể thử điều này, có lẽ chút bẩn nhưng tôi nghĩ rằng nó sẽ làm việc cho tôi

cập nhật ngoại trừ của bạn để

function show_404($page = '', $log_error = TRUE) { 
    if ($log_error) { 
    log_message('error', '404 Page Not Found --> '.$page); 
    } 
    header('Location: http://www.########.###/error/error_404'); 
    die(); 
} 

sau đó chỉ cần tạo ra bộ điều khiển để xử lý chuyển hướng, có lẽ với các lỗi khác nhau mà bạn có thể sử dụng bộ điều khiển cùng

theo cách đó bạn sẽ nhận được đầu trang động và chân trang

Các vấn đề liên quan