Mais sobre as visões Codeigniter

Veremos pontos adicionais sobre as visões em CodeIgniter, como o passo de parâmetros de configuração, codificação PHP específica das visões e como podem retornar um texto em vez de escrevê-lo na tela.

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


Publicado em: 22/9/11
Valorize este artigo:
Como dissemos anteriormente, as visões serão parte fundamental de nossas aplicações web em CodeIgniter. No artigo anterior do Manual de CodeIgniter já começamos a explicar o que eram as visões e os detalhes gerais sobre seu uso. Não obstante, ainda faltam algumas coisas que você deve saber sobre as visões.

Neste artigo vamos conhecer várias coisas importantes sobre as visões em CodeIgniter. Começaremos explicando como podemos passar valores às visões para personalizá-las, de maneira que mostrem uma informação dada e não sempre o mesmo texto fixo. Depois, veremos que podemos colocar qualquer código PHP nas visões, além do código HTML necessário para mostrar a informação e que existem diversos esquemas de codificação alternativos em CodeIgniter, que podemos utilizar para economizar código fonte. Terminaremos mostrando como uma visão pode retornar o texto resultado de processar-se uma variável, em vez de colocá-lo na saída por padrão, ou seja, em vez de enviá-lo ao cliente como código da página.

Adicionando dados dinâmicos às visões

Uma das coisas mais básicas que vamos querer fazer com as visões será personalizar as informações que sejam mostradas através de algumas variáveis de configuração. Assim, as visões poderão mostrar diferentes dados com um mesmo código.

Por exemplo, pensemos que temos uma visão com o código de uma página completa, com o desenho próprio de nosso site. Poderíamos estar usando essa visão para todas as páginas do website, mas nesse caso enviaremos diferentes variáveis de configuração com os dados próprios de cada página, como podem ser o título da página, o corpo, etc.

Todos esses dados são enviados através de um array associativo passado à visão, e dentro dela poderemos acessar cada um dos elementos desse array a partir do índice desse elemento. Poderemos vê-lo facilmente com um exemplo.

Começamos por construir um array associativo com os dados da visão. No código seguinte podemos ver o controlador que fizemos no artigo anterior para mostrar o trabalho com visões, onde acrescentamos o código para gerar o array associativo e enviá-lo à visão.

<?php
class MeuControlador extends Controller {

   function index(){
      
      $dados = array(
         'titulo' => 'Página de teste',
         'descriçãon' => 'Esta é a descrição desta página, um pouco mais longa.',
         'corpo' => 'O corpo da página provavelmente será um texto muito longo...<p>Com varios parágrafos</p>'
      );
      
      $this->load->view('minhavisao', $dados);
   }
   
}
?>

Agora, na visão, podemos acessar todos os dados desse array associativo, como se fossem variáveis normais, através dos nomes dos índices do array. Vejamos o código de minhavisão.php que consume os dados que são enviados a ele para configurar seu conteúdo.

<html>
<head>
<title><?php echo $titulo?></title>
</head>
<body>
<h1><?php echo $titulo?></h1>
   <blockquote>
      <p><b><?php echo $descrição?></b></p>
   </blockquote>
   <p><?php echo $corpo?></p>
</body>
</html>

Como estamos vendo, podemos mostrar os conteúdos das variáveis de configuração enviadas à visão através de simples instruções echo de PHP. Os dados recebidos na visão estão disponíveis por meio de variáveis normais, com nomes iguais aos índices do array associativo que foi enviado ao carregar a visão.

Código PHP dentro das visões

As visões em CodeIgniter são bastante flexíveis e permitem executar qualquer tipo de código PHP que necessitemos. Em princípio, as ações que necessitaremos codificar dentro de uma visão serão bastante simples, como mostrar o conteúdo de variáveis, ou realizar algum loop por alguma estrutura de dados.

Entretanto, nada impede escrever código PHP, tão complexo quanto quisermos, com acessos a recursos do servidor, bases de dados, etc. No entanto, insisto que se utilizarmos corretamente as visões, de acordo como se deveria no modelo - visão - controlador, não deveríamos fazer operações muito complicadas.

CodeIgniter dispõe, ademais, de algumas estruturas de código, adicionais às que existem no próprio PHP, que podemos utilizar dentro das visões e que nos podem ajudar a reduzir nosso código ou a esquematizá-lo um pouco mais.

O primeiro dos códigos alternativos é muito útil, pois se trata de um resumo da sentença echo. Por exemplo, o seguinte código:

<?php echo $variavel?>

Pode-se resumir por este outro:

<?=$variavel?>

Do mesmo código CodeIgniter dispõe de estruturas de control if, for, foreach y while que podem ser escritas de uma maneira resumida, em comparação com as estruturas de controle habituais em PHP. Agora não vamos explicar a sintaxe destes elementos, e por isso recomendamos ler a documentação do framework para encontrar mais referências.

Nota: Estas novas maneiras de fazer loops e condicionais, na minha opinião, podem ser úteis para usuários que não conhecem PHP, mas não vale muito a pena aprendê-las se já dominamos PHP, como provavelmente aconteça se estamos lendo este manual. Contudo, se a responsabilidade de criar as visões recai sobre um designer que não conhece PHP, pode ser mais simples utilizar, por exemplo, o IF de CodeIgniter em vez do IF típico de PHP.

Tudo depende de com o que se sinta mais confortável. A vantagem pode ser a simplicidade e o fato de nas estruturas de CodeIgniter não ser necessário utilizar as chaves nos loops ou estruturas IF. No entanto, existe uma desvantagem que é fato de que CodeIgniter necessitará pré-processar a visão para converter as estruturas de código de CodeIgniter nas standards de PHP e isto levará um tempo. Além disso, quando tenhamos um erro de sintaxe no código de uma visão, se estamos utilizando as estruturas de controle de CodeIgniter, é muito provável que a linha de código onde PHP informe do erro não corresponda à linha de código na visão onde fizemos alguma coisa mal, o que pode dar alguma dor de cabeça na etapa de depuração.

Revolver visões como um dado de tipo string

Quando carregamos uma visão em CodeIgniter, a saída produzida por ela é enviada ao usuário visitante assim que tenha sido processada a função do controlador que invoca as visões. Este comportamento é o standard dentro do framework, mas também poderíamos conseguir que o código HTML resultante de carregar uma visão retorne ao controlador para poder armazená-lo em uma variável e fazer com ele o que necessitemos.

Conseguimos isto, enviando um terceiro parâmetro ao método que carrega uma visão, com um valor true, que indica justamente isso, que desejamos que o método retorne o código processado pela visão.

$cadeia = $this->load->view('minhavisao', '', true);

A linha de código anterior provocaria que o carregamento da visão fosse armazenada na variável $cadeia. Como se pode ver, ao chamar a visão temos que indicar o nome da visão, seguido do nome do array que contém os dados para configurar a visão (ou aspas aspas se não estamos passando dados à visão), e finalmente o valor true como terceiro parâmetro. Em um esquema como este, o conteúdo da visão não seria enviado ao navegador, a não ser que em seguida fizéssemos um echo da variável $cadeia ou algo parecido.






Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

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