Colocado por Marcelo Sabadini em
14/11/2008
CakePhp – Procurar/listar arquivos em uma pasta
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:
-
<?
-
class ControladorController extends AppController {
-
-
function minhaFuncao(){
-
-
# ===— Instancie a classe e passe o path como parâmetro
-
$folder = new Folder(‘img/home/’);
-
# ===— Acesse o método find() da classe Folder e passe uma regex para procurar os arquivos
-
$arquivos = $folder->find(".*\.png");
-
-
# ===— Sete a variável para usar da forma que quiser na view
-
$this->set(‘arquivos’, $arquivos);
-
-
}
-
-
}
-
?>
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.
Colocado por Marcelo Sabadini em
04/10/2008
CakePhp – Como utilizar tabela com nome fora do padrão
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:
-
<?
-
class Opcao extends AppModel {
-
var $name = "Opcao";
-
var $useTable = "opcoes";
-
}
-
?>
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!


(9 votos, média: 4.56 de 5)
