Criando um sistema de erros amigáveis para o CakePHP

Por mais simples que seja, uma aplicação sempre terá uma mensagem dinâmica a passar para o usuário. Sempre damos um jeitinho de mandar a mensagem de formas diferentes em arquivos diferentes. Isso torna o sistema de erros da nossa aplicação uma coisa inextensível e de manutenção custosa.

O CakePHP, apesar de toda sua facilidade, não possui um sistema integrado para exibição de mensagens para o usuário. Para isso criei um pequeno sistema de mensagens amigáveis, composto por um componente, um helper e um elemento. Chamo-o de FriendlyError.

Com o FriendlyError você poderá mostrar três níveis de erro para o seu usuário: message, warning e error (mensagem, aviso e erro, respectivamente).

Seu uso consiste da definição, no controle, da mensagem a ser exibida, e sua captura para exibição, na view.

Exemplo:
controle

try{
    // ...
} catch (Exception $e) {
    $this->FriendlyError->setError($e->getMessage);
}

view

<?php
setError($this);

e teremos um resultado assim:

<p class="errors">
  &nbsp;
</p>



<p class="friendly_error">
  Ocorreu um erro no sistema!
</p>

Para a utilização do FriendlyError você deve fazer alguns ajustes na sua aplicação. O primeiro é indicar o uso do componente e do helper nas variáveis $components e $helpers do seu controller. O segundo é copiar o elemento friendly_error.ctp para a sua pasta de componentes. Se precisar, pode modificar a forma como o elemento exibe os erros.

Feito isso, basta utilizar o componente no seu controller. Os métodos possíveis são setMessage(), setError() e setWarning(). Eles não são declarados no componente, mas são interpretados pelo método __call() (PHP5).

Se precisar de mostrar outras mensagens você poderá utilizar os outros argumentos ($error_array, $warning_array e $message_array) do método setError() do helper para poder exibir suas mensagens junto com as mensagens que estavam na sessão.

O FriendlyError é compatível apenas com o PHP5.

Download: http://charlesschaefer.net/projetos/cakephp/friendly_error/files/friendly_error.tar.gz

Comments

comments powered by Disqus