2016-02-29 62 views
1

我使用SF2 Finder Component来访问目录并获取其中的子目录。使用Symfony 2 Finder组件获取子目录

这是我的代码:

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

image_upload_path包含3个目录:/small/medium/large

当我甩了dirs属性是什么Finder回报我得到:

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

如何修改此访问权限以访问/small/medium/large

+0

'dirs'是一个私有财产,你如何访问它?你可以发布转储结果的代码吗? –

回答

4

我建议使用通配符,但经过一些测试后,似乎无论有没有通配符,结果都是一样的。

随着getIterator()我能够列出目录的所有孩子。在我的文件系统上有一个/var/www/包含一个html目录。

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

该代码返回此:

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 
) 

所以我觉得这个问题是由于您使用的不是调用getIterator()Finder私有财产:

当我转储出Finder返回的dirs属性我得到: