Criando um sistema de erros amigáveis para o CakePHP
Sunday, April 22nd, 2007Por 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
1 2 3 4 5 | try{ // ... } catch (Exception $e) { $this->FriendlyError->setError($e->getMessage); } |
view
setError($this); ?>
e teremos um resultado assim:
1 2 3 4 | <p class="errors"> </p> <p class="friendly_error"> Ocorreu um erro no sistema! |
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
