Contao-Camp 2024
Ergebnis 1 bis 13 von 13

Thema: Wie kann man in ein Event eine Anlage manuell per SQL/oder Funktion hinzufügen?

  1. #1
    Contao-Nutzer
    Registriert seit
    03.12.2020.
    Beiträge
    6

    Standard Wie kann man in ein Event eine Anlage manuell per SQL/oder Funktion hinzufügen?

    ich muss eine fertige Modul ändern, und da ist neue Event per SQL wird angelegt, ich möchte noch dazu zusätzlich eine Anlage hinzufügen.
    aber das geht leider nicht, in Contao Adminbereich bei Event editieren bei Anlagen Feld kommt nichts

    Meine Beispiel:
    $event->addEnclosure = 1;
    $event->enclosure = "a:1:{ i:0; s:72: '".$file->path."'; }";

    Wie kann man in ein Event eine Anlage manuell per SQL/oder Funktion hinzufügen?

  2. #2
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.935

    Standard

    Zitat Zitat von olegazz Beitrag anzeigen
    $event->enclosure = "a:1:{ i:0; s:72: '".$file->path."'; }";
    würde nur dann ein sinnvolles/korrektes serialisiertes PHP-Array ergeben, wenn $file->path zufällig genau 72 Zeichen lang wäre. Es muss daher dann wohl eher

    PHP-Code:
    $event->enclosure serialize([ $file->path ]); 
    sein. Und da es serialize in SQL nicht gibt, wird es in reinem SQL wahrscheinlich schwer bis unmöglich.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

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

    Standard

    Zitat Zitat von olegazz Beitrag anzeigen
    ich muss eine fertige Modul ändern, und da ist neue Event per SQL wird angelegt, ich möchte noch dazu zusätzlich eine Anlage hinzufügen.
    aber das geht leider nicht, in Contao Adminbereich bei Event editieren bei Anlagen Feld kommt nichts

    Meine Beispiel:
    $event->addEnclosure = 1;
    $event->enclosure = "a:1:{ i:0; s:72: '".$file->path."'; }";

    Wie kann man in ein Event eine Anlage manuell per SQL/oder Funktion hinzufügen?
    In enclosure muss ein serialisiertes Array aus binären UUIDs stehen. Die UUID bekommst du vom Database Assisted File System (DBAFS) bzw. vom FilesModel. Also bspw.:
    PHP-Code:
    $event->addEnclosure 1;
    /** @var \Contao\FilesModel $file */
    $event->enclosure serialize([$file->uuid]); 

  4. #4
    Contao-Nutzer
    Registriert seit
    03.12.2020.
    Beiträge
    6

    Standard

    danke,

    aber klappt trozdem nicht.

    ich habe jetzt endekt, daten werden nicht als "Blob" in tabelle gespeichert, und wenn per Admin das mache dann wird das eien Blob
    warum kann das ligen?

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

    Standard

    Poste deinen Code.

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

    Standard

    $event = new \Contao\CalendarEventsModel();
    ......
    $event->addEnclosure = 1;
    $event->enclosure = serialize([$file->path]);
    ......
    $event->save();

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

    Standard

    Das geht wie gesagt so nicht. Du musst dort die binäre UUID speichern.
    Geändert von Spooky (09.12.2020 um 10:49 Uhr)

  8. #8
    Contao-Nutzer
    Registriert seit
    03.12.2020.
    Beiträge
    6

    Standard

    aber so ...

    $event->enclosure = serialize([$file->uuid]);

    funktioniert auch nicht

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

    Standard

    Poste bitte den gesamten Code, damit man geanuer sieht, was du eigentlich tust.

  10. #10
    Contao-Nutzer
    Registriert seit
    03.12.2020.
    Beiträge
    6

    Standard

    das ist eigentlich die gesamte Code

    $event = new \Contao\CalendarEventsModel();
    ......
    $event->addEnclosure = 1;
    $event->enclosure = serialize([$file->path]);
    ......
    $event->save();

    nur die File kommt so:
    $file = Database::getInstance()->prepare("SELECT path, id FROM `tl_files` WHERE `uuid` = UNHEX('" . $uuid. "') LIMIT 1 ")->execute();

    rest ist Text

    wie ich habe schon gesagt dast ist nicht meine Modul, muss nur ändern.
    Und das ist meine erste Erfahrung mit Contao )))

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

    Standard

    Zitat Zitat von olegazz Beitrag anzeigen
    $file = Database::getInstance()->prepare("SELECT path, id FROM `tl_files` WHERE `uuid` = UNHEX('" . $uuid. "') LIMIT 1 ")->execute();
    Sieh dir das mal genauer an, dann solltest du den Fehler erkennen (Du lässt nur path und id aus tl_files selektieren …). Aber wenn du schon die UUID hast, brauchst du ja $file gar nicht.

  12. #12
    Contao-Nutzer
    Registriert seit
    03.12.2020.
    Beiträge
    6

    Standard

    Per mene Code generirt:
    01.png
    02.png
    Gleiche Event wenn ich per Admin Seite Anlage hinzufüge
    03.png
    04.png

    wo ist Unterschied? ich sehe nur per Admin daten in Tabelle wird als "Blob"
    Geändert von olegazz (09.12.2020 um 12:11 Uhr)

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

    Standard

    Achso, die UUID, die du bereits hast, ist nicht binär. Ich würde es einfach so machen:
    PHP-Code:
    use Contao\CalendarEventsModel;
    use 
    Contao\FilesModel;

    $file FilesModel::findByUuid($uuid);
    $event = new CalendarEventsModel();

    $event
    ->addEnclosure 1;
    $event->enclosure serialize([$file->uuid]);
    $event->save(); 

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
  •