2009-05-05 28 views
10

Tôi có một bộ điều khiển gọi là articles, tạo mô hình bài viết lấy dữ liệu có liên quan từ cơ sở dữ liệu.Trong Kohana, bạn có thể kích hoạt lỗi 404 không?

Tôi muốn, nếu phương pháp tôi gọi trả về false, để kích hoạt lỗi 404. Đây là những gì tôi có cho đến nay.

$articleName = $this->uri->segment('articles'); 

$article = new Articles_Model(); 

$data = $article->getArticleUsingSlug($articleName); 

if (!$data) { 
    Kohana::show_404; // This doesn't work. 
} 

Tôi chỉ cần thêm móc tùy chỉnh của riêng tôi mà chuyển hướng người dùng đến một thực tế 404 (/ bài viết/trang-not-found /) như kích hoạt bởi Kohana, nhưng là có cách nào tôi có thể gọi phương thức 404 nội bộ của mình để Kohana từ bỏ việc xử lý bộ điều khiển của tôi và sử dụng móc mới của tôi?

+0

Có thể bạn không chỉ cần sử dụng các phương pháp php header và sau đó chết()? –

+0

@Nael El Shawwa Không phải khi có các tùy chọn tốt hơn có sẵn. – alex

Trả lời

11

này làm việc cho tôi:

Event::run('system.404'); 

Phiên bản nào của Kohana bạn đang sử dụng?

+0

Phiên bản là: 2.3.2 – alex

+2

Cũng lưu ý rằng nếu $ config ['display_errors'] = TRUE; bạn sẽ thấy một dấu vết ngăn xếp cùng với trang 404 của bạn. Nếu bạn muốn JUST một trang 404 để hiển thị thiết lập display_errors = FALSE – pifantastic

11

Kohana/General/Lỗi xử lý/Kohana_404_Exception

/** 
* @param string URL of page 
* @param string custom error template 
*/ 
throw new Kohana_404_Exception([string $page [, string $template]]); 
+0

Cảm ơn câu trả lời - tốt hơn muộn hơn bao giờ hết! +1 – alex

+0

Ai đó khác có thể vấp ngã trong câu hỏi này trong tương lai :) – Sampson

+0

Như một bản cập nhật, trong Kohana 3.3 đó là 'ném mới Kohana_HTTP_Exception_404() '. –

1

Kohana Docs cho bạn biết cách để làm điều đó:

throw HTTP_Exception::factory(404, 'File not found!'); 
Các vấn đề liên quan