2009-05-05 15 views
10

J'ai un contrôleur appelé articles, qui crée le modèle d'articles qui obtient les données pertinentes de la base de données.Dans Kohana, pouvez-vous déclencher une erreur 404?

Je veux, si la méthode que j'appelle renvoie false, pour déclencher une erreur 404. C'est ce que j'ai jusqu'ici.

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

$article = new Articles_Model(); 

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

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

Je viens d'ajouter mon propre crochet personnalisé qui redirige l'utilisateur vers un réel 404 (/ articles/page-not-found /) comme déclenchée par Kohana, mais est-il possible que je peux invoquer sa méthode 404 interne faire Kohana abandonner le traitement de mon contrôleur et utiliser mon nouveau crochet?

+0

tu ne peux pas utiliser la méthode d'en-tête de php puis mourir()? –

+0

@Nael El Shawwa Pas quand il y a de meilleures options disponibles. – alex

Répondre

11

Cela fonctionne pour moi:

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

Quelle version de Kohana utilisez-vous?

+0

la version est: 2.3.2 – alex

+2

Notez également que si $ config ['display_errors'] = TRUE; vous verrez une trace de pile avec votre page 404. Si vous voulez juste une page 404 pour afficher set display_errors = FALSE – pifantastic

11

Kohana/Général/Erreur de manipulation/Kohana_404_Exception

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

Merci pour la réponse - mieux vaut tard que jamais! +1 – alex

+0

Quelqu'un d'autre peut trébucher à travers cette question à l'avenir :) – Sampson

+0

En tant que mise à jour, dans Kohana 3.3 c'est 'throw new Kohana_HTTP_Exception_404()'. –

1

Kohana Docs dit que vous façon de le faire:

throw HTTP_Exception::factory(404, 'File not found!');