Pessoal, hoje vamos falar mais um pouco sobre o CakePHP e, para alegria geral, sujar as mãos de código. Se você está iniciando no CakePHP, este é o tutorial para você. Esta é parte 2 desta série de artigos.
Na parte 1 deste tutorial, vimos a parte mais chata do CakePHP, que é configurar a nossa aplicação. Para resolver esse problema, o pessoal do CakePHP criou um negócio chamado Bake, que é um terminal (ou console, como quiser) no Dos onde ele vai perguntando o que você deseja configurar e você só responde “Sim” ou “Não”. Uma solução muito inteligente que deixaremos para outro tutorial.
O código do tutorial passado pode ser baixado aqui.
Requisitos para este tutorial
Para este tutorial, você precisa:
- Ter visto a parte anterior deste tutorial;
- Atender aos requisitos da parte 1 deste tutorial;
- Plantar uma bananeira.
Outra breve introdução
Conforme a parte 1 deste tutorial, já temos nosso banco de dados e o CakePHP configurado para acessá-lo. Agora é facílimo fazer um cadastro e rechear nosso DB de dados. Poucos minutos e voa lá.
Iniciando: criando nosso form
A primeira coisa que vamos fazer é criar nosso formulário. Essa parte é muito fácil. Depois de fazer isto você não vai mais querer ficar criando formulário HTML na mão.
No arquivo display.ctp que se encontra no diretório app/view/pages, insira o código a seguir.
< h1>Cadastro de Pessoas< /h1>
< ?php
echo $form->create('Usuario');
echo $form->input('nome');
echo $form->input('descricao', array('rows' => '3'));
echo $form->end('Enviar dados!');
?>< h1>Cadastro de Pessoas< /h1> < ?php echo $form->create('Usuario'); echo $form->input('nome'); echo $form->input('descricao', array('rows' => '3')); echo $form->end('Enviar dados!'); ?>
O código acima é muito simples. A primeira linha cria nosso formulário através de $form->create(). O CakePHP apresenta o que chamamos de Helpers (em português ajudantes), que são funções já prontas para facilitar nossa vida. Na classe helper $form temos a função create().
Como parâmetro da função $form->create() nós indicamos o nome do nosso Model, que é a classe que cuida da comunicação da nossa aplicação com a respectiva tabela do banco de dados. Aqui escolhemos o Model “Usuario”, que criamos na parte 1 deste tutorial. Se o Model é “Usuario”, teremos de criar um Controller para isto chamado Usuarios, pois é este o Controller que será aberto pelo CakePHP. A action chamada será add, que é padrão do CakePHP. Faremos isto a seguir.
Recapitulando: Expliquei isto na parte 1 deste tutorial, mas vamos relembrar. Se o nome do Model é “Usuario” (nomes de Models sempre devem ser no singular), ele vai automaticamente cuidar da comunicação com a tabela de mesmo nome, mas no plural e minúsculo (é, nomes de tabelas devem ser em minúsculas). Assim sendo, cuidará da tabela “usuarios”.
$form->input() é a função do CakePHP que cria inputs HTML. O legal é que o Cake vai em nossa tabela “usuarios” (pois especificamos o Model “Usuario”) e cria o input de acordo com o tipo de campo desta tabela. No nosso caso temos os campos “nome varchar(120)” e “descricao text”. O que ele vai fazer é criar um textarea para o descricao, pois este é do tipo text.
Como parâmetro de $form->input() especificamos o nome do campo na nossa tabela. Neste caso é $form->input(’nome’) e $form->input(’descricao’). O segundo parâmetro de input(’descricao’) é “array(’rows’ => ‘3′) “, indicando que nosso textarea terá a propriedade “rows=3″.
$form->end(’Enviar dados!’) cria nosso input do tipo Submit com o valor “Enviar dados!”.
Criando nosso Controller Usuarios
Esta é teoricamente a última coisa que vamos fazer. Você vai ver como o CakePHP insere tudo no DB automaticamente.
Crie o arquivo usuarios_controller.php no diretório app/controllers com o seguinte código:
< ?php
class UsuariosController extends AppController {
function add(){
if (!emptyempty($this->data)) {
if ($this->Usuario->save($this->data)) {
$this->flash('Seus dados foram salvos.', '/pages');
}
}
}
}
?> < ?php class UsuariosController extends AppController {
function add(){
if (!empty($this->data)) {
if ($this->Usuario->save($this->data)) {
$this->flash('Seus dados foram salvos.', '/pages');
}
}
}
}
?>Pronto. Se você rodar o código já estará sendo tudo gravado no DB. Vou explicar.
Quando criamos nosso form, especificamos só o nosso Model ($form->create(’Usuario’)). O CakePHP assume que seja para carregar o Controller com o mesmo nome do Model (Controllers têm nome no plural) na action add(). Podemos, no nosso form, espeficar outros Controllers e outros actions, mas para fins didáticas, deixemos assim. Desta forma, o CakePHP faz toda a mágica pra nós.
Na primeira linha dentro de nossa action add(), verificamos se há dados enviados por formulários. $this->data automaticamente, sempre, guarda informações provindas de formulários.
Caso existam dados enviados, tenta salvar os dados através do comando
$this->Usuario->save($this->data)
$this->Usuario->save($this->data) $this refere-se à própria classe. Se você entende de POO, não terá problemas aqui. Aliás, isto é um requisito para este tutorial, conhecer o básico de POO.
Usuario é a classe Model Usuario. Essa classe é carregada por nosso Controller, sendo assim filha deste.
Na classe Model Usuario, há a função save(), que guarda o dados no DB automaticamente. Nem precisamos digitar SQL nem nada, somente passar os dados do formulário como parâmetro.
Se tudo vai bem,
$this->flash('Seus dados foram salvos.', '/pages'); $this->flash('Seus dados foram salvos.', '/pages'); Esta linha mostra uma página temporária indicando que os dados já foram salvos, bastante você clicar no link para ir para o endereço “/pages”. Quando debug está ajustado para “0″ (zero), esta página dura 1 ou 2 segundos e redireciona o usuário automaticamente. Configurar o debug deixaremos para outro tutorial.
Finalizando
Pessoal, vimos como guardar informações no DB de forma fácil. Se você ver o código, entenderá que é tudo muito simples, o CakePHP monta os SQLs necessários para nós e insere tudo automagicamente. O texto se prolongou, pois é meu desejo explicar tudo nos mínimos detalhes.
Num próximo tutorial vamos mostrar os dados salvos em nossa página. É tudo mais simples ainda.
Tirando aquela página default do CakePHP
Vou aproveitar e falar um macete. Você notou que a página que você está já tem uma imagem do CakePHP no topo, e a frase “CakePHP: the rapid development php frameword”? E o pior é que você não sabe como tirar isto?
Em outro artigo meu, que pode ser lido aqui, você pode encontrar a solução. Sinceramente, recomendo a leitura rápida, pois por isto eu quase deixei o CakePHP pra trás. Por sorte descobri como resolver o problema.
Pessoal, deixem seus comentários. Se tiverem dúvidas ou sugestões, comentem. É importante saber o que vocês acharam do tutorial. São centenas de usuários lendo estes artigos, entretanto sem comentar. Comentem.
Até a próxima.

Entrar
Cadastre-se
Ajuda
Responder

Quote