Ergebnis 1 bis 4 von 4

Thema: Alte Callbacks in Contao 5 überbringen

  1. #1
    Contao-Nutzer
    Registriert seit
    08.03.2024.
    Beiträge
    1

    Standard Alte Callbacks in Contao 5 überbringen

    Hallo!

    Kann mir jemand helfen, ein altes Contao 3&4 Modul in Contao 5 zu bringen? Ich hatte in der DCA-Datei des Moduls einen Callback zum Speichern von Mitgliedsdaten, so:

    Code:
    $GLOBALS['TL_DCA']['tl_member']['fields']['email']['save_callback'][] = array('HGR\EventHelpers','memberEmailChange');
    und dann hatte ich meine Callback-Funktion in einer separaten Hilfsklasse und einem eigenen Namespace:


    Code:
    namespace HGR;
    
    class EventHelpers extends \Frontend
    
    {
    
    static public function memberEmailChange($strNewEmail, $objUser) { ... }
    
    }


    Wenn ich nun einen Mitgliedsdatensatz im Backend speichere und versuche, den Callback auszulösen, erhalte ich den Fehler:

    System::importStatic() ist fehlgeschlagen, weil die Klasse "HGR\EventHelpers" kein gültiger Klassenname ist oder nicht existiert.
    System::importStatic() failed because class "HGR\EventHelpers" is not a valid class name or does not exist.



    Was muss ich tun, damit diese Hilfsklasse anerkannt wird? Mir ist klar, dass sich die Art und Weise, wie Contao Callbacks ausführt, stark verändert hat, seit dieser Code zum ersten Mal geschrieben wurde, aber ich würde ihn wirklich gerne auch unter Contao 5 zum Laufen bringen. In der Version 4 hat es noch funktioniert. Ist es moeglich mit Contao 5?

    (Sorry fuer mein Deutsch. Ich bin Englander.)

    Vielen dank,
    Howie.

  2. #2
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    459

    Standard

    @dirkgently

    Ist das eine Extension oder eine App in deinem src Ordner auf dem Root?
    Is this an extension you've coded or do you have it within your root in a src folder?
    (Please mind to talk in german )

  3. #3
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    459

    Standard

    Falls es keine Extension ist und du im App namespace arbeitest, kannst du die Save-Callback wie in diesem Beispiel/Example aufbauen:
    https://docs.contao.org/dev/referenc...lds-field-save

    Hier wäre ein Beispiel / Example, wie es für dich aussehen müsste - (ungetestet / untested)
    PHP-Code:
    <?php

    // src/EventListener/DataContainer/ContentTextSaveCallback.php <-- That's the path
    namespace App\EventListener\DataContainer// <-- This namespace is important

    use Contao\CoreBundle\DependencyInjection\Attribute\AsCallback;
    use 
    Contao\DataContainer;

    #[AsCallback(table: 'tl_member', target: 'fields.email.save')]
    class memberEmailChange
    {
        public function 
    __invoke($valueDataContainer $dc)
        {
            
    // value would be the value for the email
            // The member would be $dc->activeRecord so the id would be $dc->activeRecord->id
            // Apply your logic how you want to do it

            
    return $varValue// The value for the field after the save callback :)
        
    }
    }
    You can apply the same logic to your extension if you proprely register the classes in the autoloader, I guess that's your problem right now but if it's not an extension, maybe follow my example.
    I've recently updated this plugin to the newest structure, could be used as an example (especially since it has to do with members)
    https://github.com/oveleon/contao-me...ension-bundle/
    Geändert von zoglo (16.04.2024 um 19:01 Uhr)

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

    Standard

    Zitat Zitat von dirkgently Beitrag anzeigen
    (Sorry fuer mein Deutsch. Ich bin Englander.)
    You can also post in English, if you want (unfortunately the international forum is in a bit of disarray).
    » sponsor me via GitHub or PayPal or Revolut

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
  •