Ankündigung

Einklappen
Keine Ankündigung bisher.

Bild-Upload über Formular -> UUID ermitteln

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bild-Upload über Formular -> UUID ermitteln

    Wir nutzen regelmäßig Formulare und speichern die Eingaben direkt in einer CC_Tabelle.

    Das funktioniert auch soweit prima, außer z.B. bei Bildern oder PDFS mit Attribut image oder Datei-Upload.

    Im CC werden hier ja die Einträge als UUID in der Datenbank gespeichert.

    Beim Upload über ein Formular wir aber nur der Pfad in die DB eingetragen.

    Gibt es eine Möglichkeit, direkt beim Upload die UUID zu ermitteln und diese in das entsprechende DB Feld einzutragen?


  • #2
    Nutzt ihr direkt den Formulargenerator? Wenn ja, würde ich empfehlen diese als Issue bei Contao zu melden. In der DB sollte der binäre Wert zur Datei gespeichert werden. Nicht der Pfad und auch nicht die Uuid.
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Auch ein Advents-Schaffer ;-)
      Gute Idee. Fällt dir spontan ein Workaround ein?

      Kommentar


      • #4
        Der storeFormData Hook geht für sowas perfekt. https://github.com/contao/contao/blo.../Form.php#L496

        Frohen 2. Advent
        http://www.premium-contao-themes.com

        Kommentar


        • #5
          https://github.com/contao/contao/issues/3771

          Dito!

          Kommentar


          • #6
            Hab jetzt mal die

            https://github.com/fritzmg/contao-store-uuid von Fritz installiert, die genau das machen soll.

            Leider scheint es mit einem CC_Katalog nicht zu klappen. Es wird immer noch der Pfad gespeichert.


            Die Frage ist, ob in einem CC diese Voraussetzung erfüllt ist:
            storeFormData


            The extension checks if there is a DCA available for the target table and then checks if the field is a single fileTree input and converts the file path to an UUID before saving it to the database.

            Kommentar


            • #7
              Jeder CC hat auch einen DCA. Inwiefern die externe Erw. Ladereihenfolgen berücksichtigt, kann ich nicht sagen. Falls die Erw. nur Einzelauswahlfelder unterstützt (wie es sich hier liest), wird sie spätestens mit einem Mehrfachauswahlfeld nicht mehr funktionieren.
              http://www.premium-contao-themes.com

              Kommentar


              • #8
                Mehrfachauswahl ist extra berücksichtigt.

                https://github.com/fritzmg/contao-st.../StoreUUID.php

                Müssen CC_Tabellen evtl. hier in der Formular Zieltabelle festgelegt werden?

                Kommentar


                • #9
                  Sind die CC DCAs in dieser Form aufgebaut?

                  Code:
                  // check if field exists in DCA
                  if( !isset( $GLOBALS['TL_DCA'][ $table ]['fields'][ $field ] ) )
                  continue;
                  
                  // get DCA for field
                  $dcaField = $GLOBALS['TL_DCA'][ $table ]['fields'][ $field ];
                  
                  // check for single fileTree inputType
                  if( $dcaField['inputType'] != 'fileTree' )
                  continue;

                  Kommentar


                  • #10
                    Ja, Standard-DCA.

                    Müssen CC_Tabellen evtl. hier in der Formular Zieltabelle festgelegt werden?
                    Die CC Tabelle ist doch bereits als Speicherort festgelegt. Diese andere Funktion kenne ich nicht.
                    http://www.premium-contao-themes.com

                    Kommentar


                    • #11
                      Ja, Standard-DCA.
                      Kann ich die DCA Konfiguration der CC Tabellen irgendwo einsehen?

                      Fritz will debuggen...

                      Please post the DCA configuration of your tl_test table

                      Kommentar


                      • #12
                        Die Globale kann ganz normal gedebuggt werden. CC schreibt keine statischen php-dca files. Vielleicht solltest du Fritz sagen, dass du mit dynamischen DCAs arbeitest, wie MetaModels oder halt auch CC - Bevor er sich die Mühen macht.
                        ---
                        Einfach ne eigene kleine Routine erstellen, dafür sind Hooks da und genau die gewünschten Feldwerte konvertieren.

                        Das ist quasi nen Einzeiler im Hook.

                        initconfig.php

                        Code:
                        $GLOBALS['TL_HOOKS']['storeFormData'][] = array('myClass','myStoreFormData');
                        if( !class_exists('myClass') )
                        {
                        class myClass
                        {
                        public function myStoreFormData($arrSet)
                        {
                        $arrSet['myFile'] = \Contao\FilesModel::findByPath($arrSet['myFile'])->uuid;
                        return $arrSet;
                        }
                        }
                        }
                        Zuletzt geändert von Tim; 06.12.2021, 11:33.
                        http://www.premium-contao-themes.com

                        Kommentar


                        • #13
                          Sieht nicht nur gut aus, funktioniert auch noch

                          Ich frage mich echt, warum das Contao nicht von Haus aus macht...

                          Kommentar


                          • #14
                            Noch ein Nachtrag falls jemand ähnliche Projekte hat, bei denen CCs per Formular gefüllt werden.

                            Wir haben zwischenzeitlich mal den fineloader von Terminal42 dafür getestet.
                            Das erledigt den Job auch prima und speichert die UUIDs, mehr Mehrfachauswahl auch als array-blob. (Neben den anderen netten features)
                            Damit harmonieren Formulare besser den CCs. Ein hochgeladenes Bild kann im CC mit den vorgesehenen Attributen (image, datei-upload) direkt genutzt werden.

                            Einzige unschöne Besonderheit ist, dass neben dem Hauptattribut (z.b. image) noch die pfade zusätzlich in separaten Datenfeldern gespeichert werden (image_0, image_1) usw.
                            Mal sehen, ob wir das noch wegkonfiguiert bekommen.

                            Kommentar

                            Lädt...
                            X