O CakePHP é um framework de desenvolvimento ágil, para web em PHP. Há quatro semanas ganhou a versão 2.0 e nesta data que escrevo a versão já se encontra na versão 2.0.2.
Este curto post é direcionado a um público que já usa o cake, mas não sabe o que muda na versão 2 do framework.
Uma das várias mudanças, a que abordarei aqui esta relacionado à forma que o Cake trabalha com as requisições do cliente para o servidor.
O $this->RequestHandler(); é o componente responsável para manipular as requisições no CakePHP 1.3
Porém no CakePHP 2.0 este Componente está obsoleto e não dever ser mais usado.
Para tratarmos requisições utilizaremos agora o objeto CakeRequest.
Para utilizarmos, no controller é só colocarmos:
$this->request Este código é definido como:
An instance of a CakeRequest object that contains information about the current request. This object contains all the information about a request and several methods for reading additional information about the request.
Ou seja, uma instância do objeto CakeRequest contém as informações sobre o último request feito ao servidor. Contém toda a informação sobre a requisição, e métodos para levantarmos informações adicionais sobre a requisição (request).
Praticamente vou demonstrar o uso do método $this->request->is.
Este método recebe como parâmetro fontes de requisições como: post, get, ajax e outros.
Logo posso saber a origem de minha requisição. Se ela chegou por post ou por ajax e etc.
Vou passar um exemplo de uso prático:
$this->MaterialGroup->create();
if ($this->MaterialGroup->save($this->request->data)) {
if($this->request->is('ajax')){
$result = $this->MaterialGroup->find('list',
array('fields' => array('MaterialGroup.id','MaterialGroup.name'),
'order' => array('MaterialGroup.name ASC')));
echo json_encode(array_values($result));
$this->autoRender = false;
exit();
}
$this->redirect(array('action'=>'index'));
$this->Session->setFlash(__('The material group has been saved'));
} else {
$this->Session->setFlash(__('The material group could not be saved. Please, try again.'));
}
}
Este código verifica se a requisição veio por post. Se vier por get, ele não fará nada, mas por post ele realizará a ação.
Note que após o salvamento dos dados, é feito uma verificação para ver se esta requisição veio por ajax, ou por requisição comum.
Se for ajax, eu retornarei uma consulta, em json para o ajax. Se não veio por ajax, eu renderizarei uma página, com uma mensagem indicando o sucesso do salvamento.
Não detalharei mais porque isso ficará muito grande. Espero que tenha cumprido o objetivo, que seja mostrar na prática as mudanças e usos do cakephp 2.0. Quem desejar estudar mais o cakephp, leia o cookbook, que está fresquinho, porém só no idioma em inglês. Tudo neste link.
Nenhum comentário:
Postar um comentário