Exemplo de Helper em CodeIgniter

Vejamos o URL Helper de CodeIgniter, que será bom como exemplo de uso de um helper neste framework PHP.

Por Miguel Angel Alvarez - Tradução de Celeste Veiga


Publicado em: 09/1/12
Valorize este artigo:
O Helper de URL é uma das bibliotecas de funções mais fundamentais de CodeIgniter, que talvez utilizem todas as aplicações web que você possa construir com o framework, por mais simples que sejam.

O URL Helper contém uma serie de funções que nos servirão para trabalhar com URLs nas aplicações web, para realizar ações tão básicas como gerar URLs completas de páginas da aplicação web a partir de uma rota simples, a obtenção da URL base de nossa aplicação, a URL atual, etc.

Este artigo pretende servir de guia de uso de Helpers em geral, embora tenha que comentar que, no Manual de CodeIgniter, já publicamos alguma informação previa sobre os helpers, que seria bom que você conhecesse.

Nota: Para que fique claro até que ponto é básico este Helper de URL deve ser dito que, até onde explicamos neste Manual de CodeIgniter, já o utilizamos no primeiro exemplo de aplicação simples. Esse exemplo está dividido em três artigos e no segundo, intitulado Criamos a base de dados e conectamos a partir de uma página se pode encontrar o uso do helper URL.

Controlador para testar o helper

Vamos criar neste artigo um controlador que faz uso do helper URL, com dois usos do mesmo para construir links e ver a URL principal da aplicação web. Faremos um controlador bastante simples, para nos centrarmos mais no uso do helper.

Como qualquer controlador, deve estender a classe Controller.

class Testando_helper_url extends Controller {
   //código do controlador
}

Carregar o helper a partir do construtor do controlador

Como dissemos quando se falava dos helpers no artigo anterior, temos que carregar explicitamente o Helper de URL para poder utilizá-lo. Isto pode ser feito a partir do arquivo de configuração autoload.php, com o que teremos o helper carregado em qualquer lugar da aplicação, ou então, a partir do controlador onde o necessitemos. Neste caso vamos ver um controlador que carrega o helper.

No caso de carregar o helper a partir do controlador, podemos fazê-lo a partir do construtor, para que esteja acessível a partir de qualquer função, ou desde uma das funções do controlador. Veremos como carregá-lo a partir do construtor.

function __construct(){
   parent::Controller();
   
   //carrego o helper de url
   $this->load->helper('url');
}

Nota: Como se pode ver, o método de realização do construtor é de PHP 5. Recordem que em PHP 4 o construtor é uma função com o mesmo nome que a classe e em PHP 5 o construtor é uma função com o nome __construct().

Dentro dos construtores de controladores deve-se chamar primeiramente o construtor da classe pai (da que herdamos), com parent::Controller().

A segui, fazemos o carregamento do helper URL com a chamada ao método helper() da classe load que faz parte do controlador, indicando entre parênteses o helper que desejamos carregar: 'url'.

Uso do helper nas funções dos controladores

Agora que já carreguei o helper no construtor, em todo o código do controlador terei disponíveis, como globais, todas as funções do helper URL. (Também nas visões que se carreguem desde o controlador, embora não vamos fazer neste exemplo nenhuma visão)

Vejamos então um exemplo de função do controlador.

function index(){
   //escrevo desde o controlador, embora devesse fazê-lo a partir da visão
   echo "<h1>Testando helper URL</h1>";
   
   //gero o link deste controlador, para a função criada mostra_base_url()
   $link = site_url("testando_helper_url/mostra_base_url");
   //escrevo um link com essa função do controlador
   echo '<a href="' . $link . '">Mostra a URL base</a>';
}

Este é o método index() que é o que se invoca por padrão no controlador se não se especifica nenhum outro na solicitação de URL. Podemos ver o uso das funções do helper de URL na linha:

$link = site_url("testando_helper_url/mostra_base_url");

Com esta linha invocamos a função site_url() do helper URL, que serve para obter uma URL do site a partir de uma rota parcial. Esta função é útil porque serve para saber como é a URL completa com a que há que lincar diferentes páginas do site, que poderia variar dependendo do lugar donde se tenha instalado CodeIgniter, só a partir de um segmento que não pode mudar. Dito de outra maneira, ao lincar com outras páginas do site convém compor as URL sempre com a função site_url(), para que esses links sigam funcionando embora mudemos a aplicação para outro diretório, outro domínio, etc.

Nota: Um detalhe que queremos assinalar também sobre a função anterior, index(), é que fazemos uso da sentença echo de PHP para escrever coisas na página diretamente com o controlador. Isto não é recomendável, embora possa ser feito em CodeIgniter, pois a saída para a página desde nossos scripts deveria estar sempre nas visões.

Agora podemos ver um segundo método do controlador com outro uso das funções do helper URL.

function mostra_base_url(){
   //escrevo desde o controlador, embora devesse fazê-lo a partir da visão
   echo base_url();
   
   //um link para voltar
   echo '<p><a href="' . site_url('testando_helper_url') . '">Voltar</a></p>';
}

Essa função escreve na tela o que retorna a função base_url(), que pertence ao helper de URL e serve para informar da rota raiz da aplicação CodeIgniter, que também dependerá do domínio onde estejamos trabalhando e do diretório onde se tenha instalado o framework.

Depois também escreve um link para voltar à página anterior e para criar a rota do link também utilizamos o helper de URL com a função site_url() relatada anteriormente, indicando neste caso apenas o nome do controlador ao que queremos dirigir o link.

Código completo do controlador

Agora, vejamos o código do controlador completo que faz uso do helper URL:

class Testando_helper_url extends Controller {
   
   ///////////////////////////////////////////////////////////////////////////
   //Constructor
   function __construct(){
      parent::Controller();
      
      //carrego o helper de url
      $this->load->helper('url');
   }

///////////////////////////////////////////////////////////////////////////
//método index, função por padrão do controlador
function index(){
   //escrevo desde o controlador, embora devesse fazê-lo a partir da visão
   echo "<h1>Testando helper URL</h1>";
   
   //gero o link deste controlador, para a função criada mostra_base_url()
   $link = site_url("testando_helper_url/mostra_base_url");
   
   //escrevo um link com essa função do controlador
   echo '<a href="' . $link . '">Mostra a URL base</a>';
}

   ///////////////////////////////////////////////////////////////////////////
   //funcao mostra_base_url, para mostrar a URL principal desta aplicação web
   function mostra_base_url(){
      //escrevo desde o controlador, embora devesse fazê-lo a partir da visão
      echo base_url();
      
      //um link para voltar
      echo '<p><a href="' . site_url('testando_helper_url') . '">Voltar</a></p>';
   }
   
   ///////////////////////////////////////////////////////////////////////////
   //funcao mostra_url_atual, para mostrar a URL atual desta página
   function mostra_url_atual(){
      //escrevo desde o controlador, embora devesse fazê-lo a partir da visão
      echo current_url();
      
      //um link para voltar
      echo '<p><a href="' . site_url('testando_helper_url') . '">Voltar</a></p>';
   }
}

Neste código acrescentamos ao controlador um método chamado mostra_url_atual(), para testar a função do helper URL current_url(), que serve para obter a URL atual da página que está sendo executada.

Lembrem que tudo o que foi visto neste artigo serve para entender o uso dos helpers em CodeIgniter, embora tenhamos pulado algumas recomendações do trabalho com o framework, como escrever conteúdo na página diretamente com o controlador e sem utilizar as visões. Também é importante assinalar que o helper URL tem outras funções bastante úteis que seguramente seria bom que conhecêssemos e que podemos revisar na documentação do framework.






Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato