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.