Ergebnis 1 bis 3 von 3

Thema: Benutzung der FilesModel Klasse

  1. #1
    Contao-Nutzer Avatar von fl0
    Registriert seit
    13.11.2019.
    Ort
    OWL
    Beiträge
    17

    Standard Benutzung der FilesModel Klasse

    Ich versuche, alle Bilder aus einem bestimmten Verzeichnis in /files über die FilesModel Klasse auszugeben.

    Dazu gehe ich wie folgt vor:

    PHP-Code:
    // Gibt einen Pfad zurück wie bspw.: files/ordner1/unterordner1
    $filePath $this->getFilePath();

    $filesModel FilesModel::findMultipleFilesByFolder$filePath ); 
    Das funktioniert auch wie erwartet und ich bekomme eine Collection mit allen Dateien innerhalb des Verzeichnisses zurück.

    Nun möchte ich allerdings nur die Bilder innerhalb des Verzeichnisses zurückgeben und daher die Rückgabe filltern. Dies versuche ich wie folgt:

    PHP-Code:
    // Gibt einen Pfad zurück wie bspw.: files/ordner1/unterordner1
    $filePath $this->getFilePath();

    $options = [ 'column' => 'extension''value' => 'png' ];
    $filesModel FilesModel::findMultipleFilesByFolder$filePath$options ); 
    So bekomme ich allerdings ungeachtet, des als ersten Parameter angegebenen Pfades alle in /files enthaltenen .png Bilder zurück.
    Wie filter ich die Ausgabe so, dass ich nur in $options übergebenen Dateiendungen innerhalb meines mit $filePath angegebenen Ordners zurück bekomme?

    Und gibt es irgendwo eine anständige Klassendokumentation für Contao?

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.109
    Partner-ID
    10107

    Standard

    Dazu musst du findBy verwenden.
    PHP-Code:
    $path str_replace(['\\''%''_'], ['\\\\''\\%''\\_'], $filePath);

    $files FilesModel:findBy([
        
    "type='file' AND path LIKE ? AND path NOT LIKE ?",
        
    "extension = ?"
    ], [
        
    $path '/%'
        
    $path '/%/%',
        
    'png'
    ]); 

  3. #3
    Contao-Nutzer Avatar von fl0
    Registriert seit
    13.11.2019.
    Ort
    OWL
    Beiträge
    17

    Standard

    @Spooky Danke für die schnelle Antwort!

    Da ich mir letzendlich doch nur die Dateipfade der Bilder zurückgeben lassen möchte, sieht meine Lösung nun etwas anders aus:

    PHP-Code:
    public function getImages()
      {
        
    $images = [];

        
    $filePath $this->getFilePath();
        
    $fileExtensions = [ 'png''jpg''gif' ];
        
    $filesModel FilesModel::findMultipleFilesByFolder$filePath );

        if( 
    $filesModel )
        {
          
    $files $filesModel->fetchAll();

          foreach( 
    $files as $file )
          {
            if( 
    in_array$file'extension' ], $fileExtensions ) )
            {
              
    $images[] = $file'path' ];
            }
          }
        }

        return 
    $images;
      } 

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •