CakePhp – Procurar/listar arquivos em uma pasta


1 Estrelas2 Estrelas3 Estrelas4 Estrelas5 Estrelas (9 votos, média: 4.56 de 5)
Loading ... Loading ...

Ola galera, esta semana precisei procurar arquivos PNG em uma pasta. Como utilizo o CakePhp neste projeto, utilizei a lib Folder(clique e veja a documentação da classe).

É super simples, mas vale a dica.

No controlador faça o seguinte:

  1. <?
  2. class ControladorController extends AppController {
  3.    
  4.     function minhaFuncao(){
  5.        
  6.         # ===— Instancie a classe e passe o path como parâmetro
  7.         $folder = new Folder(‘img/home/’);
  8.         # ===— Acesse o método find() da classe Folder e passe uma regex para procurar os arquivos
  9.         $arquivos = $folder->find(".*\.png");
  10.        
  11.         # ===— Sete a variável para usar da forma que quiser na view
  12.         $this->set(‘arquivos’, $arquivos);
  13.        
  14.     }
  15.    
  16. }
  17. ?>

Como você pode perceber, o método find() ‘espera’ uma Expressão Regular como parâmetro. Por padrão, o parâmetro é ‘.*’, ou seja, qualquer caractere em qualquer quantidade.

No meu caso, eu utilizei a seguinte REGEX: ‘.*\.png’. Significa dizer que quero nomes de arquivos que comecem com qualquer coisa e com qualquer quantidade de caracteres(.*)e que terminem com .png(\.png). Então ele vai casar isso: asdfasdfsfsfa.png ou isso: teste123.png ou isso: _teste_.png ou isso: outro teste.png. Ele vai ignorar qualquer arquivo que não termine com ‘.png’.

Se você utilizar apenas $folder->find();, todos os arquivos da pasta serão listados.

Este método retorna um array com os arquivos encontrados.

Espero ter ajudado, qualquer coisa é só postar.

CakePhp – Como utilizar tabela com nome fora do padrão


1 Estrelas2 Estrelas3 Estrelas4 Estrelas5 Estrelas (5 votos, média: 5.00 de 5)
Loading ... Loading ...

Bom, todo mundo sabe que para criar um controlador no Cakephp você precisa criar a tabela no banco de dados com o nome no plural. Isso é muito fácil, mas, ja me deparei com um controlador que se chama ‘opcao‘… logo, o Cake espera que o nome seja ‘opcoes‘ certo?                   Errado!  o ‘dicionario’ do Ceke Cake é inglês, então teria que colocar o nome da tabela como ‘opcaos‘.

Outra situação que pode acontecer é você pegar um site/sistema pra reprogramar com o Ceke Cakemas não pode perder os dados do banco de dados… Muitas vezes o banco de addos já está estruturado e fora do padrão de nomes que o Cake espera.

Para isso, existe uma solução muito simples. Utilizaremos o atributo $useTable e colocaremos o nome da tabela. Veja o exemplo abaixo:

  1. <?
  2. class Opcao extends AppModel {
  3.     var $name = "Opcao";
  4.     var $useTable = "opcoes";
  5. }
  6. ?>

Prontinho, fazendo isto, o problema que tive foi resolvido. Caso a chave primária da tabela seja diferente de ‘id’, utilize o atributo $primaryKey, colocando o nome do campo.

Espero ter ajudado, abraços!

Get Adobe Flash playerPlugin by wpburn.com wordpress themes