DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 
DevWare  
Novidade: DevMedia lança o DevWare - Saiba mais!

CakePHP - Quebrando as normas

Veja nesse artigo as formas de como personalizar as configurações da sua aplicação em Cake para que você não precise ficar seguindo tudo que ele manda

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você gostaria de comentar o que não lhe agradou?

Até agora em nossos tutoriais seguimos as normas do Cake, o que é muito bom, pois assim ele trabalha mais por nós, mas nem sempre isso é viável como no caso de já termos uma base de dados consolidada e quisermos construir um novo sistema sobre essa base utilizando o CakePHP. Para este problema o Cake possui formas para adaptar-se à situação. Um outro exemplo seria a nomenclatura das views, elas devem ter o mesmo nome da action no controlador, nem sempre você pode querer seguir esse padrão ou por algum outro motivo, como duas actions usarem a mesma view. Mas nem todas as normas podem ser desobedecidas, com, por exemplo, a nomenclatura das classes as localização dos arquivos nos diretórios.

Configurações no Model.

Para começar vamos imaginar o cenário seguinte:

Uma base de dados já existente com as tabelas:

  • tb_post: id,titulo,texto.
  • tb_usuario: id_usuario, nome.

Logo elas não estão nem um pouco no padrão que o Cake nos diz para usar.

O model de tb_post ficaria assim.

Listagem 1: Model para tb_post

<?php 
public  class Post extends AppModel{
	/*até aqui tudo normal, mas se pararmos aqui o 
         cake irá procurar uma tabela chamada posts para 
        relaionar com esse model post, então precisamos dizer 
        explicitamente qual tabela esse model deve usar, veja a baixo*/
public $useTable = “tb_post”;
}
?>

Pronto, apartir de agora nosso model já está linkado com a tabela tb_post.

Vajamos como ficaria o model para tb_usuario.

Listagem 2: Model para tb_usuario

<?php 
public class Usuario extends AppModel{
	public $useTable = “tb_usuario”;
	/*fizemos a mesa coisa que na listagem 1, essa 
          tabela tem uma outra particularidade, sua chave primaria é 
          id_usuario e não id como requer o cakeentão vamos ter uma 
          outra configuração, veja */	
	public $primaryKey = “id_usuario”;
}
?>

A próxima variável que será mostrada serve para “setar” qual campo deve aparecer como display nas listas quando usarmos o método Model:find(‘list’);

Listagem 3: implementado a variável displayField

<?php 
public  class Post extends AppModel{
	public $useTable = “tb_post”;
	public $displayField = “titulo”;
}
?>
 

Configurações para o Controller.

Normalmente um controller agrega um model com o mesmo nome no singular. Mas quando esse cenário não for verdade podemos utilizar o array $uses.

Listagem 4: implementando o array $uses

public class UsuarioController extends AppController{
	/* Aqui estamos dizendo qual model esse controller deve usar, 
         podemos também usar mais de um model quando for o caso bastando 
         apenas adicionar mais uma posição ao array */
	public $uses = array(‘User’);
}

E para quando tivermos que usar uma view que não tenha o mesmo nome da action, podemos utilizar o método render(‘view’,’layout’).

Listagem 5: implementando o método render.

<?php

public function cadastrar(){
/*verifica se o tipo do request é post*/
	if($this->request->is(‘post’)){
}
/*renderiza a view listar dentro*/
$this->render(‘listar’);
}
?>

Podemos utilizar esse método para disfarçar a url, pois o que aparecerá no url será a action que o usuário digitou e não a que foi redenrizada.

Bem, isso é tudo por enquanto, deixe seu comentário, dúvida, elogio e até a próxima.


Allan Douglas
Analista Programador, com foco nas linguagens Java e PHP, Tecnico em Informática Formado pela Escola Técnica Redentorista - Campina Grande Paraíba. Graduando em Análise de Sistemas pela Estácio do Recife.
O que você achou deste post?

    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
[Fechar] Você precisa estar logado para dar seu feedback.

Clique aqui para efetuar o login

Caso não tenha um cadastro DevMedia, clique aqui para se cadastrar (gratuito)
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03