A free and open-source book on ZF3 for beginners

Translation into this language is not yet finished. You can help this project by translating the chapters and contributing your changes.

4.8. Expresar Condiciones de Error

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.


Top