KISS - Keep it simple, stupid!

Trabalhando com Scaffold

postado por João José Pedrini em 28/11/2008 03:50:51

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: , ,
Topo

3 Comentários

Creative Commons License
Sou Ágil: KISS em http://kiss.souagil.com.br está licenciado sobre
Creative Commons Attribution-Share Alike 2.5 Brazil License.

souÁgil