Posted By

phptrampos on 05/02/13


Tagged

hooks


Versions (?)

Hooks - frontController


 / Published in: PHP
 

Este é um hook que utilizo para evitar de carregar headers e footers em cada view que carrego nos meus projetos. Tem me sido muito útil desde que comecei a utiliza-lo.

O que ele faz? --------

Basicamente a cada chamada ($this->load->view('arquivo');) que faço nos controllers, o hook irá carregar junto 2 outros views um header e um footer (respectivamente os arquivos _header.php e _footer.php na pasta /view). Um antes da minha chamada , no caso o _header, e um depois que a view principal carregar, no caso o _footer.

Como usar? --------

1º - Modifique o arquivo /config/hooks.php com o código informado mais abaixo;

2º - Crie o arquivo frontController.php na pasta /hooks e cole o código informado no Source;

3º - Habilite os hooks no arquivo config.php mudando o parâmetro: $config['enable_hooks'] = TRUE;

4º - Crie 2 arquivos na pasta /application/views/_header.php e _footer.php e os modifique de acordo com o seu site. Colocando o conteúdo de Header (meta tags, styles e javascripts fixos) no arquivo _header.php até a abertura da tag body;

No arquivo _footer.php o fechamento do e qualquer outro conteúdo que queira deixar fixo no rodapé do seu site.

Chamadas AJAX: Não se preocupe com as suas chamadas AJAX. Este Hook irá perceber isso e não irá carregar as views.

Se tiver dúvidas, entre em contato comigo pelo email : phptrampos[at]gmail[dot]com

  1. <?php
  2. //*************************************
  3. //Arquivo: application/config/hooks.php
  4. //*************************************
  5.  
  6. if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  7.  
  8. $hook['post_controller_constructor'] = array(
  9. "class" => "frontController",
  10. "function" => "onApplicationStart",
  11. "filename" => "frontController.php",
  12. "filepath" => "hooks"
  13. );
  14.  
  15. $hook['post_controller'] = array(
  16. "class" => "frontController",
  17. "function" => "onApplicationEnd",
  18. "filename" => "frontController.php",
  19. "filepath" => "hooks"
  20. );
  21. ?>
  22.  
  23. <?php
  24. //**********************************************
  25. //Arquivo: applicatoin/hooks/frontController.php
  26. //**********************************************
  27. class frontController {
  28.  
  29. function onApplicationStart() {
  30. $CI =& get_instance();
  31. if(!$this->isAjax() && !@in_array($CI->uri->rsegment(2), $CI->noRender))
  32. $CI->load->view("_header");
  33. }
  34.  
  35. function onApplicationEnd() {
  36. $CI =& get_instance();
  37.  
  38. if(!$this->isAjax() && !@in_array($CI->uri->rsegment(2), $CI->noRender))
  39. $CI->load->view("_footer");
  40. }
  41.  
  42. function isAjax() {
  43. if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == "XMLHttpRequest") {
  44. return true;
  45. } else {
  46. return false;
  47. }
  48. }
  49.  
  50. }
  51. ?>

Report this snippet  

You need to login to post a comment.