Webly: Criando Nossa Primeira Página No Cakephp: Parte 2 - Webly

Ir para

Regras para postagem

É permitido postar livremente respostas com comentários, testes e avaliações dos scripts. Postagens contendo dúvidas sobre o script, deverão ser postadas no fórum principal de PHP

IMPORTANTE: Todos os tutoriais postados neste fórum irão automaticamente para o portal Webly. Contribua você também e faça parte da equipe de colaboradores que fazem a evolução da web. Obrigado.
Página 1 de 1

Criando Nossa Primeira Página No Cakephp: Parte 2 Botando a mão na massa Avaliar tópico: -----

#1 Membro offline   KeyMaster Ícone

  • Ícone
  • Grupo: Membro Amigo
  • Posts: 185
  • Cadastrado: 18-outubro 08
  • Localização:Pedro Osório, RS
  • Interesses:Administração, Webdesign, Programação, Marketing, música. Esqueci de citar Administração

Ícone  Postou 21 fevereiro 2009 - 04:13

[O artigo original pode ser acessado no meu Blog pessoal aqui. Deixe seus comentários, são importantes para saber a sua aceitação e, assim, decidir sobre futuros tutoriais.]

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.
Lula, Lula, beijomeliga

http://www.eualexandre.com.br
0

Página 1 de 1


Resposta rápida

  

1 usuário(s) está(ão) lendo este tópico
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)