*/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.

Responder a