Tópicos em CakePHP

CakePHP 1.2 - generateList agora é find(”list”)

Olá pessoal,

esta é uma dica rápida. O antigo Model->generateList agora virou find("list"), sendo que o seu uso foi simplificado ainda mais.

Agora basta adicionar o atributo $displayField no model com o nome do campo que será mostrado em uma lista desses valores. Se tivessemos um model Estado (id, nome e abrev) com todos os estados brasileiros e decidimos mostrar o campo nome, bastaria no model:

PHP:
  1. class Estado extends AppModel{
  2.  
  3. var $name = "Estado";
  4.  
  5. var $displayField = "nome";
  6.  
  7. }

E no controller:

PHP:
  1. $this->set("estados", $this->Estado->find("list"));

Simples não?

Até a próxima pessoal!

Comentários (5)

CakePHP 1.2: Corrigindo erro estranho na Dreamhost

Olá pessoal,

a medida que passei a usar mais o CakePHP 1.2, passei a me deparar com mais problemas. (Não são muitos. Mas alguns são bem chatos.)

Estava instalando um novo site na Dreamhost, quando me deparei com o seguinte erro:

Missing Controller

Error: InternalError.htmlController could not be found.

Error: Create the class InternalError.htmlController below in file: app/controllers/internal_error.html_controller.php

<?php
class InternalError.htmlController extends AppController {

	var $name = 'InternalError.html';
}
?>

Notice: If you want to customize this error message, create app/views/errors/missing_controller.ctp

Percebam que nem mesmo o nome deste controlle solicitado é coerente. Depois de muito ajeitar o routes sem muito sucesso, acabei descobrindo na lista oficial que deveria trocar a conta para PHP 4. Não entendi o porquê do erro, mas felizmente a Dreamhost me permitiu fazer isso!

Abraços e espero que ninguém passe por isso em um servidor de hospedagem que não dá a mesma liberdade que a DH!

Comentários (3)

CakePHP 1.2: carregando model, controller e component dinâmicamente

Olá pessoal,

continuando a série de posts sobre o CakePHP 1.2 e das mudanças que ele trouxe, neste post irei falar como carregar dinâmicamente model', controller's e component's.

No Cake 1.1, era comum usármos:

PHP:
  1. loadModel("nomeDoModel");
  2. loadComponent("nomeDoComponent");
  3. loadControllers("nomeDoController");

No Cake 1.2 todos os esses loads viraram App::import, que seria usado assim:

PHP:
  1. App::import("Model", "nomeDoModel");
  2. App::import("Component", "nomeDoComponent");
  3. App::import("Controller", "nomeDoController");

O Cake 1.2 está se tornando OO de verdade.

Abraços pessoal e até a próxima!

Comentários (11)

CakePHP 1.2 - Named params

Olá pessoal,

um recurso bem interessante do CakePHP 1.2 é o chamado named params, ou parâmetros nomeados, que consiste em enviar informações pela URL mas sem precisar ter uma "ordem" para isso.

Por exemplo:
www.dominio.net/controller/método/nome:Tulio/cidade:Pouso Alegre/

Assim podemos recuperar estes valores dentro do controller usando o seu nome e não mais dependendo da posição que ela está na URL.

Todos os parâmetros nomeados chegam ao controller dentro de $this->params["named"], neste exemplo acima, teriamos $this->params["named"]["nome"] e $this->params["named"]["cidade"].

Vale lembrar que como o parâmetro nomeado pode ou não vir na URL, devemos verificar sua existência com isset antes de usá-lo.

Até a próxima pessoal, qualquer dúvida, comentem!

Comentários (5)

CakePHP 1.2 - Salvando registros

Olá pessoal,

atendendo a pedidos e aproveitando que por se tratar de um assunto interessante, vou falar sobre a inserção e atualização de dados no CakePHP 1.2.

A primeira mudança que encontramos é a inclusão do método set para o model, assim antes de salvarmos, validarmos e etc, devemos definir os dados usando o mesmo.

Como todos sabem o Cake usa um único método para criar e atualizar registros (o método save). Mas como diferenciar um do outro? Com o ID :) Se nos dados passados (setados) houver o id, será efetuado um update, senão um insert. Simples, não?

Exemplo:

PHP:
  1. $dados = array("Usuario"=>
  2. "id"=>1,
  3. "nome"=>"Tulio Faria"
  4. )
  5. );
  6.  
  7. $this->Usuario->set($dados);
  8. $this->Usuario->save();

Como em $dados tem o id (chave primária), neste caso, seria feito um update setando o nome para "Tulio Faria" do Usuario de id = 1.

Para fazermos o insert, bastaria tirar o id de dados.

Para atualizar um único campo, podemos usar um outro método, o saveField.

PHP:
  1. $this->Usuario->id = 1;
  2. $this->Usuario->saveField("nome", "Tulio Faria");

Neste caso, faria o mesmo efeito do exemplo do save, atualizando o nome para "Tulio Faria" para o Usuario de id = 1.

Bom é isso pessoal, qualquer dúvida comentem!

Abraços,

Comentários (7)

CakePHP 1.2: helper para paginação, simples, rápido e indolor

Olá pessoal,

eu venho usando o CakePHP 1.2 nos meus projetos recentes, e confesso que o quer já era bom ficou muitíssimo melhor.

Uma das novas características incorporadas ao core do CakePHP 1.2 é o helper para paginação e que salvou minha pele em um projeto, onde do dia para noite 10 registros viraram 6000, e resolvido com uma paginação em menos de 2 minutos.

Para usá-lo, começamos definindo os parâmetros da paginação, que pode ser feito de modo genérico para todos os models usados do controller (código aplicado no controller que terá paginação):

PHP:
  1. var $paginate = array('limit' => 50);

Neste caso definimos o tamanho da página de registros com o tamanho 50. Podemos ainda, adicionar conditions, fields, order, page e recursive, assim como é feito no findAll de um model.

Essa configuração será usada para todos os models deste controller. Se quisermos configurações diferentes para models diferentes, usaríamos:

PHP:
  1. var $paginate = array(
  2.  
  3. 'Model1'=> array('limit' => 50),
  4.  
  5. 'Model2'=> array('limit' => 20)
  6.  
  7. );

Depois de configurado, na hora de enviarmos os dados para o view, ao invés de usar findAll ou similares, usaremos:

PHP:
  1. $this->set("dados", $this->paginate("NomeDoModel"));

Pronto, agora só falta mostrar as páginas no view com:

PHP:
  1. Mostrando página: <?php echo $paginator->counter(array("separator"=>" de ")); ?>
  2.  
  3. ...
  4.  
  5. <?php echo $paginator->prev("Anterior"); ?>
  6.  
  7. <?php echo $paginator->numbers(); ?>
  8.  
  9. <?php echo $paginator->next("Próxima"); ?>

Depois disso é só testar e correr pro abraço :)

Bom pessoal, qualquer dúvida comentem! Abraços e até a próxima!

Comentários (12)

Vídeo: Palestra no CONISLI 2007

Olá pessoal,

depois de muita briga com softwares de edição de vídeo :) . Finalmente consegui editar o vídeo de minha apresentação sobre CakePHP no CONISLI 2007.

É minha primeira palestra, então me desculpem por qualquer falha :)

Assistir agora!

Se possível, comentem com suas opiniões.

Abraços,

Comentário

Evento “Mão na Massa Cake”

Olá pessoal,

dia 8 de Dezembro na FIAP em São Paulo Elton Minetto irá ministrar o curso "Mão na Massa Cake" .

Quem estava aguardando uma oportunidade de iniciar ou aprender mais sobre o framework não pode perder.

Até a próxima!

Comentário

Slides da palestra no CONISLI 2007

Olá pessoal,

desculpem a demora na postagem de algum material sobre a CONISLI, mas que fim de ano sempre é muito "brabo" no quesito correria :).

CONISLI 2007 CONISLI 2007

Quem quiser baixar os slides, aqui estão eles.
Sobre os vídeos, ainda estou apanhando para compactá-los. Mas creio que logo conseguirei :)

Abraços e até mais...

Comentários (4)

CONISLI 2007 - Palestra sobre CakePHP

Olá pessoal,

entre os dias 9 e 11 de Novembro acontecerá em São Paulo (na UNICID) o  CONISLI - Congresso Internacional de Software Livre. Eu irei participar através da palestra: CakePHP - desenvolvimento web ágil com PHP.

A minha palestra acontecerá no dia 10/11 as 9:00 da manhã.

Conto com a presença de vocês, não só para a minha palestra mas também para o congresso.

Abraços,

Comentários (6)

« Mais Antigos