*/classes/Helper/Erros.php*
<?php
defined('SYSPATH') or die('No direct script access.');
class Helper_Erros {
public static function addErrorLog($errorLog = array()) {
$erro = ORM::Factory('Erro');
$erro->datahora = Helper_Datahora::getDateTime('now');
$erro->usuario_id = Helper_Usuario::getUsuario()->id;
$erro->ip = $_SERVER['REMOTE_ADDR'];
$erro->host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$erro->url = Request::current()->uri();
$erro->post = json_encode(Request::current()->post());
$erro->values($errorLog);
$erro->save();
}
}
?>
*/classes/HTTP/Exception*
<?php
defined('SYSPATH') or die('No direct script access.');
class HTTP_Exception extends Kohana_HTTP_Exception {
public function get_response() {
Kohana_Exception::log($this);
if (Kohana::$environment === Kohana::DEVELOPMENT) {
return parent::get_response();
} else {
$errorCode = $this->getCode();
if (!in_array($errorCode, array(404, 500)))
$errorCode = 500;
$errorLog = array(
'class' => get_class($this),
'code' => $this->getCode(),
'message' => $this->getMessage(),
'file' => $this->getFile(),
'line' => $this->getLine(),
);
$attributes = array(
'action' => $errorCode,
);
Helper_Erros::addErrorLog($errorLog);
$route = Route::get('erros')
->uri($attributes);
$view = Request::factory()
->uri($route)
->post('errorLog', $errorLog)
->execute()
->send_headers()
->body();
$response = Response::factory()
->status($this->getCode())
->body($view);
return $response;
}
}
}
*// controler de erros*
<?php
defined('SYSPATH') or die('No direct script access.');
class Controller_sistemaxpto_Erros extends Template_Sistema {
public $ormName = 'Erro';
public $roles = 'Administrador;';
public function action_index() {
$this->action_listagem();
}
public function action_listagem() {
$erros = ORM::factory($this->ormName)
->limit(10)
->find_all();
$qtdeErros = ORM::factory($this->ormName)
->count_all();
// pesquisa
$campos = ORM::factory($this->ormName)->_pesquisa;
$pesquisa = Helper_NavPesquisa::getFormPesquisar($campos);
$paginacao =
Helper_Paginacao::getPaginacao('/sistemaxpto/erros/listagem?${page}',
$qtdeErros);
$view = View::Factory('sistema/sistemaxpto/erros/listagem');
$view->set('erros', $erros);
$view->bind('pesquisa', $pesquisa);
$view->bind('paginacao', $paginacao);
$this->template->content = $view;
}
public function action_404() {
$post = Request::current()->post();
$errorLog = $post['errorLog'];
$view = View::Factory('erros/404');
$view->set('errorLog', $errorLog);
$this->template->content = $view;
}
public function action_500() {
$post = Request::current()->post();
$errorLog = $post['errorLog'];
$view = View::Factory('erros/500');
$view->set('errorLog', $errorLog);
$this->template->content = $view;
}
public function action_503() {
$post = Request::current()->post();
$errorLog = $post['errorLog'];
$view = View::Factory('erros/503');
$view->set('errorLog', $errorLog);
$this->template->content = $view;
}
}
*// view de erros*
<div class="container_16 navigator">
<span class="titulo">
<a href="<?php echo Request::current()->uri(); ?>">
<img src="/media/imagens/icones/alerta.png"> Erro 404
</a>
</span>
</div>
<div class="container_16">
<?php if (Helper_Notificacao::hasNotificacoes()) { ?>
<?php echo Helper_Notificacao::getNotificacoes(); ?>
<?php } ?>
</div>
<div class="container_16">
<div class="grid_16 conteudo">
<p>A página que você tentou encontrar não existe ou foi removida,
tente utilizar os links e menus de navegação para acessa-lá, caso o erro
ainda continue, entre em contato conosco clicando <a
href="/sgme/suporte/novo">aqui</a></p>
<div id="errorbox">
<div id="errorboxmostrarmais">
<a href="#">Mostrar mais detalhes do erro</a>
</div>
<div id="errorboxinformacoes">
<span class="datahora"><b>Data/Hora:</b> <?php echo
Helper_Datahora::getDateTime('now'); ?></span><br />
<span class="url"><b>URL:</b> <?php echo
Request::current()->url(); ?></span><br />
<span class="code"><b>Erro:</b> <?php echo
$errorLog['code']; ?></span><br />
<span class="class"><b>Classe:</b> <?php echo
$errorLog['class']; ?></span><br />
<span class="line"><b>Linha:</b> <?php echo
$errorLog['line']; ?></span><br />
<span class="mensagem"><b>Mensagem</b> <?php echo
$errorLog['message']; ?></span>
</div>
</div>
<p>Para voltar para a página principal <a href="/">clique
aqui</a></p>
</div>
</div>
Em 20 de novembro de 2013 11:11, Diogo Machado <[email protected]>escreveu:
> Bom dia pessoal, a algum tempo eu venho pensando em criar um módulo para
> páginas de erro. No local onde trabalho nós temos muitos portais e
> aplicações, e fica dificil dar manutenção em todas as views extendidas do
> kohana, aquelas /views/kohana/error.php, alguém sugere alguma
> implementação? Eu pensei via módulo, mais nem sei como faria para chamar na
> app.
>
> --
> Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana
> Php" dos Grupos do Google.
> Para cancelar a inscrição neste grupo e parar de receber seus e-mails,
> envie um e-mail para [email protected].
> Para postar neste grupo, envie um e-mail para [email protected].
> Visite este grupo em http://groups.google.com/group/kohana-php.
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>
--
Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana Php" dos
Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um
e-mail para [email protected].
Para postar neste grupo, envie um e-mail para [email protected].
Visite este grupo em http://groups.google.com/group/kohana-php.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.