views:

1793

answers:

3

I have a controller called articles, which creates the articles model which gets the relevant data from the database.

I want to, if the method I call returns false, to trigger a 404 error. This is what I have so far.

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

 $article = new Articles_Model();

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

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

I just added my own custom hook which redirects the user to an actual 404 (/articles/page-not-found/) as triggered by Kohana, but is there a way I can invoke it's internal 404 method to make Kohana give up processing my controller and use my new hook ?

+7  A: 

This works for me:

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

What version of Kohana are you using?

pifantastic
version is: 2.3.2
alex
Also note that if $config['display_errors'] = TRUE; you will see a stack trace along with your 404 page. If you want JUST a 404 page to display set display_errors = FALSE
pifantastic
A: 

Can't you just use the php header method and then die()?

Nael El Shawwa
Or perhaps the post above would be the proper way to do it?
Nael El Shawwa
If you do this make sure to send a 404 header.
pifantastic
+4  A: 

Kohana / General / Error-handling / Kohana_404_Exception

/**
 * @param  string  URL of page
 * @param  string  custom error template
 */
throw new Kohana_404_Exception([string $page [, string $template]]);
Jonathan Sampson
Thanks for the answer - better late than never! +1
alex
Somebody else may stumble across this question in the future :)
Jonathan Sampson