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



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



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



 

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.


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.