Avançar para a área de conteúdo

Bem-vindo ao developerWorks. Se você não possui um ID IBM e senha, Registre-se aqui.

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Esse perfil inclui o primeiro nome, o sobrenome e o nome de exibição identificado quando você se registrou no developerWorks. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Todas as informações enviadas são seguras.

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Todas as informações enviadas são seguras.

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

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

Duane O'Brien, PHP developer, 自由职业者
Duane O'Brien é um canivete suíço tecnológico desde quando The Oregon Trail era somente texto. Sua comida favorita é sushi. Ele nunca esteve na lua.
(Um autor Contribuidor do IBM developerWorks)

Resumo:  CakePHP é um auxílio estável de desenvolvimento rápido e pronto de produção para a construção de Web sites em PHP. Esta série "Prepare Web Sites com Rapidez Utilizando CakePHP" mostra como construir um catálogo de produtos on-line utilizando CakePHP.

Visualizar mais conteúdo nesta série

Data:  02/Jun/2009 (Publicado em: 21/Nov/2006)
Nível:  Intermediário

Comentários:  

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.


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.


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.


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.


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ê.


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.

4 de 10 | Anterior | Próximo

Comentários



static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Software livre
ArticleID=397006
TutorialTitle=Prepare Web Sites com Rapidez Utilizando CakePHP, Parte 1: Introdução
publish-date=06022009
author1-email=d@duaneobrien.com
author1-email-cc=ruterbo@us.ibm.com

Tags

Help
Use o campo de pesquisa para encontrar todos os tipos de conteúdo no My developerWorks com essa tag.

Use a barra de rolagem para ver mais ou menos tags.

Tags populares mostra as principais tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Minhas tags mostra suas tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Use o campo de pesquisa para localizar todos os tipos de conteúdo no Meu developerWorks com essa tag. Tags populares mostra as tags principais para essa zona de conteúdo particular (por exemplo, tecnologia Java, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere). Minhas tags mostra as suas tags para essa zona de conteúdo em particular (por exemplo, tecnologia Java, Linux, WebSphere).