PHP, Twig : Listing basique des fichiers d'un répertoire

19 mars 2017

Petite méthode très basique introduisant la classe PHP DirectoryIterator. Ceci permet de retourner le contenu des fichiers d'un répertoire, d'une manière que je trouve plus élégante et plus puissante que la fonction glob, même si cette dernière a l'avantage de la simplicité.

public function dirListing()
{
    $dir_path = __DIR__.'/../../web/upload/';
    $i = 0;
    foreach (new DirectoryIterator($dir_path) as $file) {
        if (preg_match('#.(jpg|jpeg|png|gif)$#i', $file->getFilename())) {
            $i++;
            $files[$i]['id'] = $i;
            $files[$i]['name'] = $file->getFilename(); // Retourne le nom de fichier.
            $files[$i]['fullpath'] = $file->getPathname(); // Retourne le chemin complet sur le système,
            // y compris le nom de fichier
        }
    }
    return $files;
}

En utilisant Twig, ceci me permet, une fois le tableau passé à la vue via le contrôleur, d'accéder aux fichiers via un simple :

<table>
{% for file in files %}
    <tr>
        <td>{{ file.id }}</td>
        <td>{{ file.name }}</td>
        <td>{{ file.fullpath }}</td>
        ...
    </tr>
{% endfor %}
</table>