2009-05-05 3 views
10

У меня есть контроллер под названием articles, который создает модель статей, которая получает соответствующие данные из базы данных.В Кохане вы можете вызвать ошибку 404?

Я хочу, если метод, который я вызываю, возвращает false, чтобы вызвать ошибку 404. Это то, что у меня есть до сих пор.

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

$article = new Articles_Model(); 

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

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

Я просто добавил свой собственный крючок, который перенаправляет пользователя к фактическому 404 (/ статей/страниц не обретенной /), как инициируется Кохана, но есть способ, я могу вызвать его внутренний 404 метод заставить Кохану отказаться от обработки моего контроллера и использовать мой новый крюк?

+0

Разве вы не можете просто использовать метод заголовка PHP, а затем умереть()? –

+0

@Nael El Shawwa Не когда есть лучшие варианты. – alex

ответ

11

Это работает для меня:

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

Какую версию Кохана вы используете?

+0

версия: 2.3.2 – alex

+2

Также обратите внимание, что если $ config ['display_errors'] = TRUE; вы увидите трассировку стека вместе со своей страницей 404. Если вы хотите, ТОЛЬКО страница 404 для отображения set display_errors = FALSE – pifantastic

11

Кохана/Общие/обработки ошибок/Kohana_404_Exception

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

Спасибо за ответ - лучше поздно, чем никогда! +1 – alex

+0

Кто-то еще может наткнуться на этот вопрос в будущем :) – Sampson

+0

Как обновление, в Kohana 3.3 это 'throw new Kohana_HTTP_Exception_404()'. –

1

Kohana Docs говорит вам способ сделать это:

throw HTTP_Exception::factory(404, 'File not found!'); 
Смежные вопросы