Ergebnis 1 bis 6 von 6

Thema: DCA fileTree unter 3.2

  1. #1
    Contao-Fan
    Registriert seit
    27.06.2012.
    Beiträge
    600

    Standard DCA fileTree unter 3.2

    Hallo,

    ich habe eine Erweiterung mit einer verknüpften Datei in der DCA (tl_settings.php) erstellt.

    Unter 3.2 funktioniert die Auswahl nun leider nicht mehr. Der Fehler ist mir bei anderen Erweiterungen im ER auch schon aufgefallen (welche nun aber behoben sind), aber ich konnte leider nicht feststellten, womit das gefixed werden kann.

    Die Auswahl der Datei funktioniert, jedoch ist das Feld nach dem Speichern leer bzw. speichert einen falschen Wert: $GLOBALS['TL_CONFIG']['myFile'] = ' tcn|5ãŽò¿H»ê}'; --> hier sollte dann eigentlich der Pfad/ID drin stehen.

    Danke LG

  2. #2
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.520
    User beschenken
    Wunschliste

    Standard

    Da kommt wohl die binary UUID der Datei zurück, Contao 3 hat ja das datenbankgestützte Dateisystem.
    Die muss dann wohl erst von dir umgewandelt werden. Das sollte doch zu finden sein, wenn du schon weißt welche Erweiterungen das schon gefixt haben.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  3. #3
    Contao-Fan
    Registriert seit
    27.06.2012.
    Beiträge
    600

    Standard

    Da gibt es dann wohl Probleme, wenn die Datei direkt aus der localconfig kommt.

    Habe nun zwei Callbacks eingefügt, damit klappt es:

    PHP-Code:
    public function saveFile($value) {

        if (
    version_compare(VERSION,'3.2','>=')) {

            
    $uuid String::binToUuid($value);

            
    $objFile FilesModel::findByUuid($uuid);

            
    $value $objFile->path;

        }

        return 
    $value;

    }

    public function 
    getFile($value) {

        if (
    version_compare(VERSION,'3.2','>=')) {

            
    $objFile FilesModel::findByPath($value);

            
    $value $objFile->uuid;

        }

        return 
    $value;



  4. #4
    Contao-Nutzer
    Registriert seit
    10.07.2012.
    Beiträge
    12

    Standard Mehrere Bilder im FileTree

    Hallo,

    ich arbeite gerade an meiner ersten Erweiterung (unter Contao 3.2) und möchte gerne mittels FileTree mehrere Bilder in einem Feld speichern,
    sobald ich aber im BE auf speichern drücke wird nur das Erste der ausgewählten Bilder gespeichert. Was muss ich ändern um mehrere Bilder abzuspeichern?

    Hier mein Code aus dem DCA:

    Code:
    bilder' => array
            (
                'label'                 => &$GLOBALS['TL_LANG']['tl_bl_subprojekte']['bilder'],
                'exclude'               => true,
                'inputType'             => 'fileTree',
                'eval'                  => array('fieldType'=>'checkbox', 'files'=>true, 'filesOnly'=>true, 'extensions'=>$GLOBALS['TL_CONFIG']['validImageTypes']),
                'sql'                     => "binary(16) NULL"
            )

    Vielen Dank im Voraus

  5. #5
    Contao-Nutzer
    Registriert seit
    09.01.2014.
    Beiträge
    8

    Standard

    Du musst bei eval multiple auf true, fieldtype checkbox setzen und das Feld als blob definieren
    PHP-Code:
    'bilder' => array
    (
     
    'label' => &$GLOBALS['TL_LANG']['tl_bl_subprojekte']['bilder'],
      
    'inputType' => 'fileTree',
      
    'eval' => array('multiple'=>true,'filesOnly'=>true'fieldType'=>'checkbox'),
      
    'sql' => "blob NULL"


  6. #6
    Contao-Nutzer
    Registriert seit
    26.02.2014.
    Beiträge
    6

    Standard Wo genau werden diese Callbacks eingefügt?

    Zitat Zitat von valentin_ Beitrag anzeigen
    Da gibt es dann wohl Probleme, wenn die Datei direkt aus der localconfig kommt.

    Habe nun zwei Callbacks eingefügt, damit klappt es:

    PHP-Code:
    public function saveFile($value) {

        if (
    version_compare(VERSION,'3.2','>=')) {

            
    $uuid String::binToUuid($value);

            
    $objFile FilesModel::findByUuid($uuid);

            
    $value $objFile->path;

        }

        return 
    $value;

    }

    public function 
    getFile($value) {

        if (
    version_compare(VERSION,'3.2','>=')) {

            
    $objFile FilesModel::findByPath($value);

            
    $value $objFile->uuid;

        }

        return 
    $value;


    Hallo Valentin,
    bin auch gerade an meinem ersten Modul bei und speicher eine Datei ab. Beim Auslesen erhalte ich als Pfad 'cQ���>�t>('.
    Würde nun gerne deiner Lösung folgen und frage mich, wo genau die Callbacks eingefügt werden müssen.
    Direkt in die tl_firstmodule.php unter /dca?

    Danke schon mal.
    /Wolfram

    Nachtrag:

    Es soll nur ein einzelnes Bild in der DB gespeichert werden. Hatte folgenden Code

    PHP-Code:
            'logoPath'    => array
            (
                
    'label'     => &$GLOBALS['TL_LANG']['tl_firstmodule']['logoPath'],
                
    'inputType' => 'fileTree',
                
    'exclude'   => true,
                
    'eval'      => array(
            
    'mandatory'=>true,
            
    'files' => true,
            
    'filesOnly' => true,
            
    'extensions' => 'png,jpg,gif',
            
    'fieldType' => 'radio',
                    
    'tl_class' => 'clr'
                
    ),
                
    'sql'       => "varchar(255) NOT NULL default ''" //"blob NULL"
            

    Wenn ich "blob NULL" nehme, bekomme ich 'cQ���>�t>(' als Pfad geliefert. Nehme ich stattdessen "varchar(255) NOT NULL default ''" steht in der Datenbank 'cQ' und das Bild wird beim Bearbeiten des Datensatzes im Backend auch nicht mehr angezeigt


    Hab's hinbekommen.
    Danke für die Inspiration

    tl_firstmodule.php
    PHP-Code:
    'logoPath'    => array
            (
                
    'label'     => &$GLOBALS['TL_LANG']['tl_firstmodule']['logoPath'],
                
    'inputType' => 'fileTree',
                
    'exclude'   => true,
                
    'eval'      => array(
            
    'mandatory'=>true,
            
    'files' => true,
            
    'filesOnly' => true,
            
    'extensions' => 'png,jpg,gif',
            
    'fieldType' => 'radio',
                    
    'tl_class' => 'clr'
                
    ),
                
    'save_callback' => array
                (
                    array(
    'tl_firstmodule''saveFile')
                ),
                
    'load_callback' => array
                (
                    array(
    'tl_firstmodule''loadFile')
                ),
                
    'sql'       => "varchar(255) NOT NULL default ''" //"blob NULL"
            
    )
    //...

    class tl_firstmodule extends Backend
    {
      public function 
    saveFile($value) {
        if (
    version_compare(VERSION,'3.2','>=')) {
            
    $uuid String::binToUuid($value);
            
    $objFile FilesModel::findByUuid($uuid);
            
    $value $objFile->path;
        }
        return 
    $value;
      }

      public function 
    loadFile($value) {
        if (
    version_compare(VERSION,'3.2','>=')) {
            
    $objFile FilesModel::findByPath($value);
            
    $value $objFile->uuid;
        }
        return 
    $value;
      }

    Geändert von whContao (05.03.2014 um 10:50 Uhr)

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
  •