Avançar para a área de conteúdo

ir para o conteúdo principal

developerWorks Brasil  >  Software livre  >

Prepare Web Sites com Rapidez Utilizando CakePHP, Parte 1: Introdução

Auxílio no Desenvolvimento Rápido e Fácil de PHP

developerWorks
Ir para a página anteriorPágina 4 de 11 Ir para a próxima página

Opções de documento

Código de amostra


Classificar este tutorial

Ajude-nos a melhorar este conteúdo


Helpers

O Helpers no CakePHP existe principalmente para ajudar a acelerar o desenvolvimento de suas visualizações. Existem helpers para HTML, Ajax, JavaScript e mais. O Helpers facilita a inserção de partes de código HTML que você se pega gravando várias vezes.

Modificando o Arquivo users_controller.php

Para começar a utilizar o Helpers, você vai precisar modificar o arquivo users_controller.php criado anteriormente. Você deve dar um nome ao controlador e dizer a ele que quer utilizar alguns helpers, nesse caso, os helpers HTML e Formulário. Edite o arquivo para incluir as variáveis de classe $name e $helpers.


Listagem 14. O Controlador de Usuários

<?php
class UsersController extends AppController
{
    var $name = 'Users';

    var $helpers = array('Html', 'Form' );



    function register()

    {

...

Agora que incluiu seus helpers, você pode começar a utilizá-los.



Voltar para parte superior


Facilitando as Tabelas

Os usuários do Tor devem estar preparados para ver quem mais está registrado para utilizar o aplicativo. O CakePHP possui inúmeros helpers para ajudar você a criar tabelas. Esses helpers incluem várias partes úteis de funcionalidade, sendo que algumas delas você provavelmente já gravou mais de uma vez. Para demonstrar essa capacidade, você vai criar uma visualização para exibir usuários registrados.

Criando uma Ação knownusers

Comece criando uma ação knownusers no controlador de usuários.


Listagem 15. Criando uma Ação knownusers
                 
function knownusers()
{
$this->set('knownusers',
$this->User->findAll(null, array('id', 'username', 'first_name',
'last_name'), 'id DESC')
);
}
                

Isso chama a função integrada findAll no modelo de usuário. A função findAll utiliza um campo contendo condições (nesse caso, você passou condições nulas, que retornarão todos os usuários), uma array de campos a serem retornados (não queremos todas as informações sobre o usuário, apenas as que você quer que todos vejam) e um campo de classificação e uma ordem (nesse caso, id DESC para classificar os campos em ordem decrescente por ID). Também é possível especificar um limite (máximo de linhas a ser retornado), uma página (se você estiver paginando os dados), uma opção recursiva, que pode ser especificada para retornar modelos associados aos dados (por exemplo, se você estava consultando uma tabela de grupos e vários usuários pertencerem a cada grupo).

A saída de findAll é colocada na variável knownusers. Os dados agora podem ser acessados a partir de uma visualização.



Voltar para parte superior


Criando a Visualização knownusers

Crie o arquivo app/views/users/knownusers.ctp em um editor de texto. Para ver com que os dados retornados por findAll se parecem, emita a variável knownusers utilizando var_dump.


Listagem 16. Emissão da Variável knownusers Utilizando var_dump
                 
<pre>
<?php var_dump($knownusers) ?>
</pre>
                

Visite a visualização em http://localhost/users/knownusers. Você deverá ver uma array de dados do usuário.


Figura 7. Os Resultados
Os Resultados

Se você tiver apenas um usuário listado, retorne a http://localhost/users/register e registre mais alguns. O resultado final será mais impressivo.

Conseguiu uma grande array de usuários? Ótimo! Hora de transformá-la em uma tabela. Substitua o conteúdo de knownusers.thtml pelo seguinte.


Listagem 17. Criando uma Tabela
                 
<table>
<?php

echo $html->tableHeaders(array_keys($knownusers[0]['User']));

foreach ($knownusers as $thisuser)
{
	echo $html->tableCells($thisuser['User']);
}

?>
</table>
                

O primeiro auxiliar criará um conjunto de cabeçalhos de tabela a partir de uma array de dados — nesse caso, a lista de chaves para nossos usuários.

O segundo auxiliar criará um conjunto de células de tabela, envolvido por tags de linha da tabela, a partir de uma array de dados — nesse caso, os valores para cada usuário.

É isso! Salve-a e acesse http://localhost/users/knownusers para ver os resultados.


Figura 8. Os Resultados
Os Resultados

Ao utilizar o auxiliar tableCells, você eliminou a necessidade de gravar seu próprio código para iteração através da array de dados do usuário. Esse é apenas um exemplo de como utilizar helpers para facilitar o trabalho com HTML no CakePHP.



Voltar para parte superior


Geração de Formulários

Construir um aplicativo da Web sem utilizar formulários é como ordenhar uma galinha: extremamente complicado e não funciona. Formulários bem construídos e de fácil manutenção são a base para qualquer aplicativo bem construído. Dada a frequência com que você vai precisar construir formulários, parece natural procurar formas de tornar o processo mais fácil sem cortar caminho.


Utilizando Helpers no Formulário de Registro

Helpers são úteis principalmente na geração de formulários. Você pode utilizá-los para gerar o HTML para seus campos de entrada, bem como sinalizadores de substituição para conter mensagens de erro de validação. Utilizando helpers para gerar os campos de formulário e portadores de mensagens de erro para o Tor, a visualização de registro pode ser muito mais parecida com a Listagem 18.


Listagem 18. Utilizando Helpers para Gerar o Formulário de Registro
                    
<p>Please fill out the form below to register an account.</p>
<?php echo $form->create('User', array('action' => 'register'));?>

<?php
    echo $form->input('first_name');
    echo $form->input('last_name');
    echo $form->input('username');
    echo $form->input('email');
    echo $form->input('password');
?>

<?php echo $form->end('Register');?>
                

Como você pode ver, fazer uso dos helpers do CakePHP pode economizar um pouco do seu código durante a gravação de elementos do formulário básico. Agora vamos dar uma olhada em como fazer uso de seus helpers.



Voltar para parte superior


Tirando o Máximo Proveito dos Helpers

Para começar a extrair mais lucros dos helpers, você vai precisar fazer duas coisas: atualizar o controlador de usuários e introduzir um pouco de validação de dados.

Abra controllers/users_controller.php e altere a função do registro para corresponder a da Listagem 19.


Listagem 19. Atualizando o Controlador de Usuários
                    
function register()
{
  if (!empty($this->data))
  {
    if ($this->User->save($this->data))
    {
      $this->Session->setFlash('Your registration information was accepted.');
    }
  }
}
                

Observe que as ocorrências de $this->params['form'] mudaram para $this->data.

Agora abra o modelo de usuário e inclua um pouco de validação de dados (coberta com detalhes mais adiante). Por enquanto, modifique seu modelo de usuário para que ele fique parecido com o da Listagem 20.


Listagem 20. Modificando Seu Modelo de Usuário
                    
<?php
class User extends AppModel
{
  var $name = 'User';

  var $validate = array(
    'username' => VALID_NOT_EMPTY,
    'password' => VALID_NOT_EMPTY,
    'email' => VALID_EMAIL
  );
}
?>
                

Analisando tudo isso rapidamente, a array $validate contém entradas para validação, que consistem em uma chave (o nome do campo de formulário) e em uma expressão regular utilizada para avaliar os dados. Não é necessário validar todos os campos de formulário. Na Listagem 20, last_name e first_name foram deixados como opcionais. O CakePHP é fornecido com várias expressões regulares predefinidas para validação de dados. VALID_NOT_EMPTY é utilizada para garantir que o campo não está vazio. VALID_EMAIL é utilizada para verificar se uma cadeia se parece mais ou menos com um endereço de e-mail.

Agora vamos fazer um teste. Tente enviar o formulário sem dados, com um ou dois campos obrigatórios vazios, com um endereço de e-mail inválido. O que você vê?


Figura 9. Primeira Tentativa de Validação de Dados
Primeira Tentativa de Validação de Dados

Agora tente uma segunda vez, deixando dados diferentes ausentes.


Figura 10. Segunda Tentativa de Validação de Dados
Segunda Tentativa de Validação de Dados

Uma coisa que você deve observar é que o CakePHP está ativando e desativando suas mensagens de erro on the fly. Outra coisa que você vai observar é que o CakePHP está se lembrando e preenchendo os valores dos campos de formulário sem você precisar fazer nada.

É aqui que está a grande vantagem. Por que você não teve que fazer nada?

Primeiro, você não precisou dizer aos campos de formulário para preencher novamente suas informações a partir da array _POST. O CakePHP fez isso por você. Você não precisou verificar a existência de erros em cada campo e exibir condicionalmente cada mensagem de forma individual. O CakePHP fez isso por você. Você não precisou se certificar de ter formatado suas tags em um xhtml válido. O CakePHP também fez isso por você.



Voltar para parte superior


Notas sobre o Helper

Este tutorial examina superficialmente os helpers. Um tutorial inteiro poderia ser escrito sobre este assunto. Saber utilizar bem os helpers envolve um longo percurso para ajudá-lo a acelerar seu desenvolvimento no CakePHP. O CakePHP inclui helpers para Ajax (utilizando prototype.js), JavaScript, conversão de números, manipulação de texto, datas, horas e mais. Revise o manual (consulte Recursos) para se familiarizar com alguns desses helpers.


Ir para a página anteriorPágina 4 de 11 Ir para a próxima página