2009-05-05 22 views
10

Tengo un controlador llamado articles, que crea el modelo de artículos que obtiene los datos relevantes de la base de datos.En Kohana, ¿puede desencadenar un error 404?

Quiero, si el método que llamo devuelve false, para desencadenar un error 404. Esto es lo que tengo hasta ahora.

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

$article = new Articles_Model(); 

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

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

acabo añade mi propio gancho a medida que redirige al usuario a un 404 reales (/ artículos/página-no-se encontró /) como se desencadena por Kohana, pero ¿hay alguna manera de invocar su método interno 404 para hacer que Kohana deje de procesar mi controlador y usar mi nuevo gancho?

+0

no puedes usar el método cabecera php y luego morir()? –

+0

@Nael El Shawwa No cuando hay mejores opciones disponibles. – alex

Respuesta

11

Esto funciona para mí:

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

¿Qué versión de Kohana está usando?

+0

versión es: 2.3.2 – alex

+2

También tenga en cuenta que si $ config ['display_errors'] = TRUE; Verás un rastro de pila junto con tu página 404. Si solo quiere una página de 404 para mostrar, configure display_errors = FALSE – pifantastic

11

Kohana/general/de control de errores/Kohana_404_Exception

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

Gracias por la respuesta, ¡mejor tarde que nunca! +1 – alex

+0

Alguien más puede tropezar con esta pregunta en el futuro :) – Sampson

+0

Como una actualización, en Kohana 3.3 es 'lanzar nuevo Kohana_HTTP_Exception_404()'. –

1

Kohana Docs dice que manera de hacerlo:

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