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:

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

E no controller:

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

Simples não?

Até a próxima pessoal!

10 Comment

  1. Apenas uma pequena correção Tulio…
    A propriedade $displayField já existia na versão 1.1.

    Parabéns pelo trabalho cara.

    Abraços!

  2. Verdade… Obrigado pela correção…

    Aliás, acho que descobri o displayField pelo método Set::combine ser bem extenso para ser usado… rs…

    Inté

  3. Caríssimo Túlio !

    Me Chamo Marcelo Fortes, sou desenvolvedor de software.
    Já com bastante experiência em programação, bancos de dados que vcpossa imaginar e nem possa imaginar 🙂

    Porém, venho do mundo Unix/Windows, aplicações Desktop e Client/Servidor clássicas para estes sistemas e tenho vivido feliz até então.

    Sou proficiente em Ada, Pascal, ObjectPascal(incluíndo Delphi e similares) C, C++ e umas linguagenzinhas de script para Unix.

    Porém pasme, até então nunca tinha desenvolvido para web. Aliás tinha ojeriza disso, sempre achei que a web não fora feita para criar aplicações sobre ela!(e continuo achando isso!). Porém, admito que exitam vantagems em alguns aspectos desta tendência atual.

    Bem primeiramente minha primeira experiencia com PHP foi frustrante aquela salada horrorosa de html + PHP + lógica de negócio com conexão a base de dados + ‘XMeLeca’ + ‘Cascade Style SHITs'(é não escrevi errado não é SHIT mesmo).

    Achava uma nojeira sempre tive antipatia por PHP.
    Procurei alternativas até achei um troço interessante como o “Morfik WebOS AppsBuilder” nome fdp hein ?
    bom mas sua licença é de lascar.

    Mais tarde vim a Gostar muito do RubyOnRails, aquela onda toda de MVC e acho que vc já tá careca de saber. Mas nunca fui proficiente nem na linguagem Ruby que respeito muito, é quse a minha linguagem ideal tirando as sujeiras que ela tem de Perl com OCAML, tão pouco proficiente no framework Rails, Scaffolding !!! nossa muito legal !!! Rake db:migrate Caramba !!! criou todas as tabelas no meu banco de dados !!!

    Mas isso tudo não passa, bem vc sabe de “Eye Candy” como falam os gringos.

    Bom agora estou numa sinuca-de-bico, fui contratado para um projeto, “Simples até”, mas todo Web e tem que ser feito obrigatoriamente em PHP !!! Disse para mim mesmo vou encarar o bicho !!!

    Escolhi o CakePHP porque, a linguagem é PHP como ordena que seja o contratante e o Framework é o que mais se aproxima do que eu gostei e me adaptei que seria o RubyOnRails (ou deveria se chamar Ruby on Raios que o partam ??? :-D)

    Brincadeiras a parte Túlio eu vim te pedir humildimente que se puder me mandar teus videos, tuas video-aulas na web para que eu possa estudar offline. Infelizmente minhas condições de trabalho são offline dá para acreditar? só tenho o manual do CakePHP impresso em inglêl de 2006 acredito eu, porém é meio árido em algumas coisas.

    Se o senhor for tão gentil ao ponto de me mandar os videotutoriais salvaria minha pele e o leite do meu bebê recém nascido :-), ficaria imenssamente grato e me disponibilizaria a retornar a aplicação para que fosse postado em seu blog. Trata-se de um sistema de ordem de serviços com algumas peculiaridades, mas nada muito complexo, o sistema todo só tem 9 entidades na forma de tabelas no banco MySQL engine InnoDB.

    Com certeza posso vir a ter dúvidas mas depois que vi seu vídeo demonstrando o utilitário Bake acredito que 70% do meu serviço já estará feito, mas infelizmente não tenho acesso online para acompanhar e praticar bem os exemplos.

    Bom fico por aqui, espero que tenha sido um email engraçado e que tenha sorrido com os “chistes” e o tom jocoso do post. Mas que tem um fundo muito sério.

    Sinceramente

    Marcelo Fortes.

  4. Isso aqui:
    $this->set(“estados”, $this->Estado->find(“list”));
    Não seria isso:
    $this->set(“estados”, $this->Estado->find(“list”));

    No campo esta mostrando as entidades html em vez do maior.

    Abraço

  5. Ops… eu coloquei espaço agora pra mostrar a entidade html, pois na primeira linha foi convertido.
    $this-& gt ;set(“estados”, $this-& gt ;Estado->find(“list”));

  6. Ola amigo! Nao sou de ficar fazendo comentario, mas eu queria parabeniza-lo pelo otimo site que voce tem! Continue com esse otimo trabalho!

  7. Olá galera,

    Estou tentando usar o find list como o exemplo abaixo
    $this->set(“categorias”,$this->Categoria->find(“list”));

    Dá esse erro Fatal error: Cannot use string offset as an array in C:\www\compartilhar\app\views\layouts\default.ctp on line 78

    linha 78: link($categoria[‘Categoria’][‘descricao’],’#’);?>

    Agora utilizando find(“all”) não dá erro nenhum.

  8. Tulio,

    seu tutorial me ajudou bastante.
    valeu =]

  9. Túlio, e a galera aí!

    Estou com um problema aqui!

    Num cadastro de subcategoria, um dos campos é categoria. Quero exibir os nomes das categorias.

    Coloquei no model da Categoria o comando abaixo:

    var $displayField = “nome”;

    E no controle da Categoria, antes da declaração das funções:

    $this->set(‘categorias’, $this->Categoria->find(‘list’));

    Quem souber e puder me ajudar, agradeço!

  10. Túlio, e a galera aí!

    Estou com um problema aqui!

    Num cadastro de subcategoria, um dos campos é categoria. Quero exibir os nomes das categorias.

    Coloquei no model da Categoria o comando abaixo:

    var $displayField = “nome”;

    E no controle da Categoria, antes da declaração das funções:

    $this->set(‘categorias’, $this->Categoria->find(‘list’));

    Nas subcategorias, ficou como eu queria. Mas quando abro o cadastro de categorias, exibe o seguinte erro:
    Parse error: parse error in C:\xampp\htdocs\opn\app\controllers\subcategorias_controller.php on line 6

    Quem souber e puder me ajudar, agradeço!

Deixe uma resposta