2016-02-29 1 views
1

J'utilise le SF2 Finder Component pour accéder à un répertoire et récupérer les sous-répertoires qu'il contient.Récupérer des sous-répertoires avec le composant Symfony 2 Finder

Ceci est mon code:

$finder = new Finder(); 
$dirs = $finder->directories()->in($this->getParameter('crmpicco.image_upload_path')); 

Le image_upload_path contient 3 répertoires: /small, /medium et /large

Quand je Déverser l'attribut dirs de ce Finder retours que je reçois:

-dirs: array:1 [▼ 
    0 => "/var/www/crmpicco/20150805093500/app/files/import_images" 
    ] 

Comment puis-je modifier cet appel pour accéder /small, /medium et /large?

+0

'dirs' est une propriété privée, comment y accéder? Pouvez-vous s'il vous plaît poster le code qui vider les résultats? –

Répondre

4

J'ai suggéré d'utiliser un caractère générique mais après quelques tests, il semble que le résultat soit le même avec ou sans un caractère générique. Avec getIterator() J'ai pu répertorier tous les enfants d'un répertoire. Sur mon système de fichiers, il y a un /var/www/ contenant un répertoire html.

$finder = new \Symfony\Component\Finder\Finder(); 
$dirs = $finder->directories()->in('/var/www')->depth('< 1'); 
foreach($dirs->getIterator() as $iterator) { 
    print_r($iterator); 
} 

Ce retour de code ceci:

Symfony\Component\Finder\SplFileInfo Object 
(
    [relativePath:Symfony\Component\Finder\SplFileInfo:private] => 
    [relativePathname:Symfony\Component\Finder\SplFileInfo:private] => html 
    [pathName:SplFileInfo:private] => /var/www/html 
    [fileName:SplFileInfo:private] => html 
) 

Je pense donc que le problème est dû au fait que vous utilisez une propriété privée de Finder au lieu d'appeler getIterator():

Quand je vider l'dirs attribut de ce que Finder renvoie je reçois: