jQuery: passando dados adicionais no .autocomplete() usando .ajax()
Alguns dias atrás me deparei com um probleminha chato com o jQuery, utilizando a função .autocomplete() . O .autocomplete() cria um observador num certo elemento que exibe uma lista de autocompletar conforme o usuário digita algo no input. Por exemplo:
1 2 3 | $('.autocompleteField').autocomplete({ 'source': 'source.com/my_data/ }); |
Os dados do autocomplete são buscados de uma fonte definida na opção “source” e pode ser local ou uma vindo de uma url externa. Nesse ultimo caso pode se passar dados adicionais para a requisição GET através da opção “extraParams”, porém esse modo não funcionou para mim.
Googlando um pouco para descobrir uma solução descobri uma maneira (óbvia) de passar esses argumentos adicionais que é utilizando a função .ajax() como meu “source”. E é muito simples
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $('.autocompleteField').autocomplete({ 'source': function(request, response) { $.ajax({ url: "source.com/my_data", dataType: 'json', data: { term: request.term, other_argument: 'test' }, success: function(data) { response(data); } }); } }); |
E é isso. =)
jQuery autocomplete: http://docs.jquery.com/Plugins/Autocomplete/autocomplete
Iniciando com o Git
Depois de um pouco de resistência com o uso do Git na Radig e já acostumados com o SVN, resolvemos de uma vez por todas utilizar abandonar o SVN e migrar para o Git. O resultado foi ótimo.
O Git é uma excelente ferramenta de controle de versão que permite gerenciar um projeto de maneira organizada, além de facilitar a contribuição externa no caso de um projeto open source. Depois de muitas dores de cabeça com o SVN, mesmo tendo um pouco de dificuldade pra entender o Git no início, finalmente abraçamos a nova ferramenta.
A utilização do git por linha de comando é simples, os comandos de ajuda e as dicas facilitam a manipulação dos arquivos de um projeto. Além disso nenhuma modificação no projeto é realmente efetuado a não ser que o usuário tenha a noção do que está sendo modificado e a disciplina no gerenciamento de um projeto é estimulada quando se observa as regras.
O git está disponível para Linux, Windows e Mac. A instalação é rápida e não exige muitos requisitos. Basta acessar esse endereço que redirecionará para a página de download correspondente ao seu sistema operacional: http://help.github.com/git-installation-redirect
Saiu a versão 1.3.5 do CakePHP
50 commits e quase 1 mês e meio depois, a equipe do CakePHP lançou ontem (24/10) a nova versão do framework, com alguns ajustes e algumas correções:
- Router agora manipula corretamente padrões para o parâmetro :action
- RequestHandlerComponent envia o content-type e o encoding de cabeçalhos para páginas html automaticamente
- Melhorias na compatibilidade com PostgreSQL 9
- Memcache Engine agora funciona certo com endereços ipv6
Mais informações no site do CakePHP. Baixe agora ou faça seu pull no Git.
Fonte: http://bakery.cakephp.org/articles/markstory/2010/10/24/cakephp_1_3_5_released
Plugin PassValidator para CakePHP
Uma das coisas que amedrontam desenvolvedores, principalmente de interfaces web, é controle de autenticação: registrar senhas, validar, autenticar um usuário, etc. No CakePHP existe o componente Auth, que cuida da autenticação de um usuário, mas essa autenticação precisa de senha e essa senha precisa ser válida, e muitas vez a tarefa de validar senha pode ser feita de várias maneiras. Pra facilitar isso, meu amigo Cauan Cabral, owner da Radig (www.radig.com.br), criou um plugin simples que ajuda na validação de senhas cadastradas.
O plugin consiste basicamente de um behavior que faz a tarefa de validação de senha conforme alguns parâmetros passados pelo desenvolvedor no seu model. Algumas opções default são:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Conforme o tipo de validação utilizada e as opções escolhidas pelo programador no model, algumas mensagens de erros são disparadas.
O plugin é open source e está disponível no Github : github.com/radig/pass_validator
Blog do Cauan Cabral: cauancabral.net/
PHP agora funciona no Android: PhpForAndroid
Uma descoberta interessante que chama a atenção de desenvolvedores PHP como eu. Uma versão do PHP foi criado pela empresa Irontec para funcionar através do interpretador para Android ASE (Android Scripting Environment) que já conta com outras linguagens interpretadas (Python, Perl, JRuby, Lua, BeanShell, JavaScript, Tcl, e Shell) e acessa alguns recursos do Android (mensagens do sistema, sensores, rede, etc.). Segundo Iván Mosquera, engenheiro de software da Irontec, a empresa começou a desenvolver aplicativos para Android feitos em Java, mas o foco principal dos projetos da Irontec era PHP. Sabendo da existência do ASE, que ainda não contava com PHP, eles iniciaram a criação do suporte ao PHP no ASE.
Como a última versão do ASE (r25) ainda não era apropriada para usar o PHP, os engenheiros da Irontec criaram uma versão r26 não oficial que funciona perfeitamente com a biblioteca PHP criada pela empresa(PHPForAndroid). Não há necessidade de um webserver, já que o PHPForAndroid conta com CLI (commando Line Interface). Não é possível ainda criar aplicações apartir do PHPForAndroid, mas é um bom incentivo aos desenvolvedores php a conhecer melhor a plataforma do Google.
A versão r26 do ASE, criada pela Irontec está disponível pra download no site oficial do PhpForAndroid, assim como o .apk para instalação do PhpForAndroid que vem com alguns scripts de exemplo. A interface do ASE é simples e fácil de usar. Esperamos que isso ainda tenha um bom futuro.
Criando Plugins no CakePHP
Criar plugins para o CakePHP não e muito diferente de criar uma aplicação CakePHP. Os plugins nada mais são que elementos adicionais da aplicação CakePHP (models, views, controllers, behaviors, etc) e não é necessário criar o trio model-controller-view para que o plugin funcione, porém, conforme a necessidade do plugin, os elementos básicos de uma aplicação e outros elementos coadjuvantes (helpers, components, behaviors) poderão ser adicionados.
1. Criando o diretório do plugin
Numa aplicação aplicação CakePHP qualquer crie um diretório com o nome do plugin.
../plugins/nome_do_plugin
Use de preferência um nome em minúsculo, separando as palavras por underscore. Tenha certeza que o nome do plugin seja diferente do nome de algum controlador existente na aplicação. A hierarquia de diretórios segue o mesmo padrão de uma aplicação CakePHP
2 . Criando um controlador
Para que o plugin possa ser acessado por uma url, é necessária a criação de um controlador e algumas views. Antes de criar o controlador, um controlador base deve ser criado. No diretório do plugin, crie um arquivo chamado nome_do_plugin_app_controller.php com o seguinte conteúdo:
1 2 3 4 5 6 7 8 | <?php class NomeDoPluginAppController extends AppController { //algumas actions e callbacks } ?> |
Não é necessário colocar métodos no controlador, porém você poderá definir as ações que serão utilizadas apenas pelo plugin. Opcionalmente, caso haja necessidade de se usar models, crie um model base “nome_do_plugin_app_model.php”
1 2 3 4 5 6 7 8 | <?php class NomeDoPluginAppModel extends AppModel { //alguns métodos } ?> |
3. Criando controladores e views
Para criar os controllers do seu plugin, crie um diretório “controllers” no diretório do plugin. O nome do controlador não precisa do nome do plugin como prefixo, porém tente criar um nome particularmente único. O controlador deverá estender o controlador base do plugin:
1 2 3 4 5 6 7 8 | <?php class MeuControladorController extends NomeDoPluginAppController { //... } ?> |
O resto é o que normalmente é feito para se visualizar uma action. Crie um diretório “views/meu_controlador” para inserir as views das actions correspondentes.
Para adicionar um model de um plugin em sua aplicação, é necessário chamar o model com o nome do plugin prefixado, separado por “.” (ponto). Por exemplo, para chamar o model “Pie” do plugin “Bakery” no seu controlador, escreva:
1 2 3 |
Para adicionar outros componentes do plugin, adicione sempre o prefixo do nome do plugin separado por ponto.






Radig Soluções em TI