Trabalhando com Scaffold
Um dos recursos mais interessantes do CakePHP e dos frameworks para Web, sem dúvida, é o Scaffold. Recentemente venho fazendo algumas apresentações sobre Cake e com certeza o momento que mais encho os olhos das pessoas é quando apresento o Scaffold.
Mas por onde você procure por Scaffold você encontrará as pessoas falando que este é um recurso temporário, que nós não devíamos utilizá-los em projetos em produção e outras milhões de críticas.
Mas será que o Scaffold é realmente tão temporário?! Vou ensinar alguns truques que podem ajudar bastante na hora de utilizar o Scaffold.
Limitando os métodos permitidos
Caso você queira que seu Controller permita somente a utilização de alguns métodos, você pode especificar o atributo Controller::scaffold. No exemplo abaixo, estou permitindo somente o o método ‘index’ e ‘delete’:
var $scaffold = array( 'index','delete' );
Escolhendo os dados que serão exibidos no ‘index’ e ‘view’
As vezes não queremos ver todos os campos na tabela, campos como ID, created ou updated podem ser omitidos. Para isto, podemos modificar o atributo Controller::viewVars['scaffoldFields'] na função de callback Controller::beforeRender(). No exemplo a seguir, vou exibir somente o campo ‘titulo’ e ‘corpo’ de um Model fictício Post.
function beforeRender(){ $this->viewVars['scaffoldFields'] = array( 'titulo','corpo' ); }
Modificando a View dos Scaffold
Vamos dizer que você queira adicionar um outro comportamento nas suas Views, queira adicionar alguns elementos AJAX. Você pode fazer isto criando seu próprio template do Scaffold. Para isto, é só criar o arquivo .CTP na pasta app/views/scaffold. As variáveis que você pode utilizar podem ser conferidas dando o seguinte comando no seu novo template:
pr($this->viewVars);
Modificando a View de um Controller específico
No caso da necessidade de mudar somente o template de um Controller, com o CakePHP também é possível. O procedimento é igual ao truque passado, mas agora você colocará seus templates na pasta de views de seu Controller (app/views/nomeController/) e nomear os arquivos com o seguinte padrão:
// app/views/nomeController/scaffold.metodo.ctp // Exemplo // app/views/posts/scaffold.index.ctp
Tenho certeza que com estas dicas vocês poderão ter aplicações ainda mais customizadas e com pouco tempo de desenvolvimento.
Tags: scaffold, truques, viewsComentários (3)
-
001
Paulo
em 16/01/2009 10:05:03Caramba, adorei o artigo, muito bom. Cada vez mais encontro mais dicas interessantes sobre o CakePHP
-
002
Paulo
em 22/01/2009 19:09:00João tem como eu modificar os headers da tabela index gerado pelo scaffold e também os labels das paginas add e edit, gerados pelo saffold?
-
003
João José Pedirni
em 22/01/2009 20:18:16Olá Paulo,
Caso seja uma modificação que esteja em todos os Controllers, copie /cake/libs/view/scaffolds/index.ctp e coloca no /app/views/scaffolds/, depois é só realizar as mudanças. Mas se for só em algum Controller, ai você coloca no /app/views/nome_do_controller/scaffold.index.ctp
Entendeu? Qualquer coisa é só falar




