Back-End

31 ago, 2009

Trabalhando com Scaffold

Publicidade

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 em que mais encho os olhos das pessoas é quando apresento o Scaffold.

Mas, por onde quer que você procure por Scaffold, encontrará as pessoas falando que este é um recurso temporário, que nós não devíamos utilizá-lo em projetos em produção e outras milhões de críticas.

Mas será que o Scaffold é realmente tão temporário?! Vou ensinar algumas dicas 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 método ‘index’ e ‘delete’:

var $scaffold = array(
    'index','delete'
);

Escolhendo os dados que serão exibidos no ‘index’ e ‘view’

Às 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, como 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 de precisar mudar somente o template de um Controller, com o CakePHP também é possível. O procedimento é igual ao indicado no passo anterior, 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 de que com estas dicas vocês poderão ter aplicações ainda mais customizadas e com pouco tempo de desenvolvimento.