A veces las cosas van mal y ocurren algunos errores. Por ejemplo, esperamos recibir una variable GET de la petición HTTP pero está ausente o tiene un valor invalido. Para expresar esta condición de error generalmente colocamos un código de estado 4xx en la respuesta HTTP y la regresamos desde la acción del controlador.
Por ejemplo, en la aplicación Blog, asumiendo que un usuario ingresa la siguiente URL en la barra de navegación del navegador web: http://localhost/posts/view?id=10000. La intención de esta petición es mostrar la publicación del blog que tiene el ID=10000. Si la publicación con este ID no existe no podemos mostrarla y usamos el siguiente código PHP para colocar un código de estado 404 (Page Not Found) en la respuesta:
// The "view" action displays a blog post with the given ID
public function viewAction()
{
// Get ID argument from GET
$id = (int)$this->params()->fromQuery('id', -1);
// Validate the argument
if ($id<1) {
// Error condition - we can not display such post
$this->getResponse()->setStatusCode(404);
return;
}
// Try to find the post (we omit the actual SQL query for simplicity).
$post = ...
if (!$post) {
// Error condition - post not found
$this->getResponse()->setStatusCode(404);
return;
}
// Normal execution
// ...
}
Cuando ZF3 encuentra el código de estado 4xx en la respuesta él redirecciona al usuario a la página especial error page. Hablaremos sobre las páginas de error más tarde en este capítulo.
Otra manera de expresar una condición (critica) de error es lanzando una Exception
, por
ejemplo:
throw new \Exception("Post with ID=$id could not be found");
Cuando ZF3 encuentra una excepción que no puede manejar muestra otra página de error con la información sobre la exception.