Pessoal,
Incluí no projeto CakePtbr o model EstadoBrasileiro e o helper Estados. Ambos são relacionados aos estados brasileiros, facilitando o uso nos formulários e models.
Documentação e códigos encontram-se no projeto.
Pessoal,
Incluí no projeto CakePtbr o model EstadoBrasileiro e o helper Estados. Ambos são relacionados aos estados brasileiros, facilitando o uso nos formulários e models.
Documentação e códigos encontram-se no projeto.
Cansado de chamar várias funções com diversos parâmetros para formatar os valores de data, número, etc nos padrões brasileiros? Então seu problemas acabaram!
Agora no plugin CakeBr há o helper chamado Formatacao para facilitar a formatação de datas e números. Os seguintes métodos podem ser utilizados:
Caso alguém tenha mais algum método para incluir, basta informar ou criar um fork no projeto.
Após criar o plugin para validações de itens brasileiros, duas funçõezinhas para verificar itens dos Correios.
O código está junto do projeto Cake PT-BR, no GitHub.
Similar ao Behavior de Validação, as funções dos Correios foram colocadas dentro de um Behavior. O nome dele é Correios (sugestivo
). Nesse behavior há dois métodos:
O retorno será negativo em caso de erro, que podem ser as constantes:
Em caso de sucesso, será retornado um array com os seguintes indices:
Bem, agora vamos aos códigos. Um exemplo usando o behavior:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | class Correios extends AppModel { var $name = 'Correios'; var $useTable = false; var $actsAs = array('CakeBr.Correios'); function frete($cepDestino) { // Supondo que é uma loja que transporta produtos pequenos (até 1Kg) return $this->valorFrete(CORREIOS_SEDEX, Configure::read('Loja.CEP'), $cepDestino, 1.0); } } // Outro caso class Endereco extends AppModel { var $name = 'Endereco'; var $actsAs = array('CakeBr.Correios'); function beforeSave($options) { $endereco = $this->endereco($this->data['Endereco']['CEP']); if ($endereco < 0) { return false; } $this->data['Endereco'] = array_merge($this->data['Endereco'], $endereco); // Aqui serão incluídas as informações de logradouro, bairro, cidade e uf. } } |
Qualquer dúvida, estamos aí.
No CakePHP temos diversas validações que servem para os EUA, porém nenhuma para os padrões brasileiros. Pensando nisso, resolvi fazer um behavior para fazer este tipo de validação. Por enquanto ele só valida CPF, CNPJ, telefone e CEP.
O código está junto do projeto CakePTBR no GitHub. Eu coloquei ele na forma de plugin, então basta copiar a pasta plugins para dentro do seu projeto (pasta app). Feito isto, ele já instalado e já pode ser usado nas models.
Nas models, deve ser incluído o behavior e usar a validação normalmente. Exemplo:
1 2 3 4 5 6 7 8 9 | class Usuario extends AppModel { var $name = 'Usuario'; var $actsAs = array('CakeBr.Validacao'); // Aqui inclui o behavior do plugin CakeBr var $validates = array( 'cpf' => array( 'rule' => 'cpf' ) ); } |
Este exemplo mostra como validar o campo cpf. Mais detalhes de como funciona a validação, veja no CookBook.
Bem, mas afinal, o que será validado?! Vamos detalhas um pouco mais cada uma das quatro funções de validação:
CPF
Se a regra for declarada apenas como cpf (idem exemplo acima), ele irá validar o CPF no formato XXX.XXX.XXX-XX e também fará o teste do dígito verificador (dois últimos números) para verificar se é um CPF válido. Em determinadas situações, deseja-se enviar pro banco apenas os números, sem a formatação, pra isso, coloquei um parâmetro opcional que pode ser passado para fazer este teste. Na rule, deve ser colocado:
1 2 3 4 5 | var $validates = array( 'cpf' => array( 'rule' => array('cpf', true) ) ); |
Deste modo ele irá validar apenas números.
CNPJ
Mesmo funcionamento do CPF, porém para CNPJ. A regra de apenas números também é válida. O formato do CPNJ é considerado XX.XXX.XXX/XXXX-XX.
CEP
O CEP, por padrão vai ser considerado nos formatos XXXXXXXX ou XXXXX-XXX. Caso queira alterar o separador, você pode definir da seguinte maneira:
1 2 3 4 5 | var $validates = array( 'cep' => array( 'rule' => array('cep', array('', '-', '.')) ) ); |
No exemplo acima, ele vai validar os valores padrões e XXXXX.XXX.
Telefone
A validação do telefone se dará através das formatações:
Caso deseje validar apenas números, passar o parâmetro true na validação. Neste caso, ele validará números com 8 ou 10 caracteres.
Bem, são estas as validações que fiz por enquanto. Caso alguém tenha uma sugestão de nova validação ou dúvida sobre as apresentadas, fique a vontade de comentar.
Pessoal, como presente de natal tivemos a chegada da release 1.2 tão esperada por muitos do CakePHP.
Os detalhes podem ser vistos em http://bakery.cakephp.org/articles/view/the-gift-of-1-2-final.
Abraços e bons projetos a todos.
Pessoal,
Natal é legal para trocar presentes, unir família e tudo mais, mas isso dura algumas horas, nas demais ficamos sem ter o que fazer, até mesmo porque o comércio não abre. Com isso, resolvi fazer alguns testes nos principais frameworks PHP que estão no mercado: CakePHP, Code Igniter, Symfony, Yii e Zend Framework.
Todos os benchmarks que eu vejo pela internet são de um simples hello world, que às vezes não utilizam o framework como indicado e acaba desvirtuando um pouco. Além disso, muitos testam somente a versão estável, deixando pra lá algumas versões mais “quentes”, como no caso do CakePHP 1.2. Então resolvi mudar! Fiz um teste com o famoso Hello World, e outros dois: um acessando o banco de dados e lendo 10 registros e o mesmo código lendo 1000 registros. Assim, aproxima um pouco da realidade do desenvolvimento, pois não desenvolvemos Hello Worlds, mas sim acesso a banco, uso de MVC (completo e não como os exemplos que não há view!). Não testei as funcionalidades em si de cada framework como cache, ACL, componentes, etc, detive-me ao básico, acessar o banco e mostrar um dos campos.
Bem, vamos começar falando da máquina de testes. Estava rodando num Debian Etch, com processador Intel Xeon 2.66GHz, 256MB de RAM. Esta máquina é um servidor de produção que é vendido pela VirtuaServer. Ou seja, tentei fazer o teste num servidor que usamos na prática e não numa máquina local de qualquer desenvolvedor. Nesta máquina a versão do Apache é a 2.2.3, PHP 5.2.0 e MySQL 5.0.32. Nenhuma extensão de cache/performance (APC, Memcache, etc) está habilitada.
O desenvolvimento da aplicação eu fiz me baseando na documentação de cada framework e não a partir de exemplos prontos, pois queria fazer seguindo a lógica dos desenvolvedores de cada framework. Tentei deixar o mais próximo do modo de produção (desabilitando debugs, etc).
Vamos aos resultados, começando pelo famoso Hello World:
O eixo Y representa o número de requisições completadas após 30 segundos de testes. Usei a ferramenta “ab” para fazer os testes (parâmetros: -t 30 -c 10 ou -c 100. Isso significa que testei cada framework por 30 segundos, com 10 ou 100 requisições em paralelo).
Como podem ver, Yii e CodeIgniter apresentaram excelentes resultados, enquanto os demais ficaram próximos. Alguns poderiam dizer que o CakePHP apresenta resultados inferiores por manter suporte ao PHP4, o que limita algumas coisas, mas lembro que o CodeIgniter também suporta o PHP4 e apresentou resultados surpreendentes.
PS: Fiz as aplicações antes de iniciar todos os testes, ou seja, a parte de banco de dados já estava configurada até para fazer o Hello World, então caberia a aplicação conectar/carregar “drivers” ou não…
Ok, agora vamos aos resultados dos testes dos frameworks acessando a base de dados e mostrando 10 registros:
Novamente Yii e CodeIgniter se sobressaindo… Porém, vejam que o CakePHP estável (1.1) obteve melhores resultados que o CakePHP 1.2 e mais, o CakePHP 1.2 obteve o pior resultados dos pesquisados.
Outra coisa interessante que podemos notar é que o CodeIgniter tem uma performance melhor com mais requisições em paralelo, sendo mais interessante para sites de grande porte, como portais que tem bastante acesso.
E agora o último teste: acesso ao banco com 1000 registros. A idéia deste teste é tentar visualizar se o framework tem um overhead grande por causa de registros ou por causa da pesquisa. Se pensarmos, a pesquisa é a mesma, a quantidade de registros retornados é que mudará, então é neste ponto que vamos notar as diferenças.
CodeIgniter novamente se destacando e ainda deixando o Yii mais distante que nos demais testes. Nota-se também que todos têm um overhead grande sobre os registros retornados no banco, pois diminuíram muito sua performance. O CakePHP 1.2 reduziu pouco, o que é interessante.
Vale ressaltar que o teste com 1000 registros não é tão usado na prática, pois uma página com 1000 registros pro usuário ler é um tanto quanto chato. Normalmente nestes casos há paginação. Exemplos práticos que vejo disto é na geração de relatório ou gráficos, mas que são pontos isolados e não tão usuais.
Alguns comentários sobre os desenvolvimentos das aplicações de teste:
Minhas opiniões quanto os resultados:
Bem, acho que é isso. Não vou largar do CakePHP, mas não custa dar uma estudada mais a fundo nos outros.
Caso alguém tenha alguma sugestão de testes a fazer, comente! Pois vou deixar minha suite de testes montada para quando sair novas versões fazer a comparação.
Caso queiram ver os testes mais detalhados, podem acessar os últimos resultados dos testes. Neste site também está disponível o resultado mais detalhado de cada teste, inclusive os números.
Abraços.
Depois de anunciada a nova versão, vamos as principais mudanças:
Boa sorte na migração.
Vou descrever aqui como usar o SWFUpload com CakePHP 1.2. Para facilitar, fiz um zip com todos arquivos necessários. Você pode baixá-lo aqui.
Neste arquivo, existe os arquivos de terceiros (pasta vendors) e na pasta app existem os arquivos necessários para sua aplicação.
Note que na pasta config, há o arquivo bootstrap.php. Nele eu só coloquei as configurações de pasta. Caso sua aplicação use mais alguma outra coisa no bootstrap, não esqueça de fazer um merge.
Na pasta webroot, o arquivo JS é o responsável pelas ações (cancelar, envio OK, envio NOK, etc), então dependendo da sua aplicação vai ser preciso alterá-lo. O CSS é a mesma coisa…
Acho que era isso. Caso tenham alguma dúvida, não exitem em perguntar. Abraços e boa sorte a todos.
Ontem foi lançada a versão candidata a release número 4. As principais modificações em relação ao RC3 são os massivos testes automatizados, aumentando ainda mais a confiabilidade do core.
Mais informações podem ser vistas em http://bakery.cakephp.org/articles/view/rc4-close.
Pessoal,
O Gustavo Carreno, dono do Groups cake-php-pt, teve problemas com sua conta do Google e acabou perdendo a autoridade do groups. Agora ele criou um novo groups para o pessoal e pedimos a todos que atualizem seus favoritos. Agora o groups chama-se cakephp-pt (sem o hifen entre o cake e php).
Novo link: http://groups.google.com/group/cakephp-pt
Abraços e esperamos vocês lá.
Powered by WordPress