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.
Como qualquer controlador, deve estender a classe Controller.
class Testando_helper_url extends Controller {
//código do controlador
}
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');
}
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'.
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.
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.
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.