Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 40 von 50

Thema: Event-Teilnehmer erweitern

  1. #1
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard Event-Teilnehmer erweitern

    Hallo Forum,

    ich war schon in der Suche unterwegs, habe aber leider nichts passendes gefunden.

    Ich habe mir die Erweiterung "contao-event-registration" installiert und würde diese gerne etwas modifizieren. Die Erweiterung selbst funktioniert. Anmeldung, Bestätiguns-Link verschicken etc. Alles gut soweit.
    Folgendes würde ich gerne zusätzlich haben:

    Nach erfolgreicher Anmeldung zu einem Event würde ich gerne im Backend per Klick dem Teilnehmer nach Erhalt der Kursgebühr eine E-Mail schicken, dass die Zahlung eingegangen ist.

    Das ein Teilnehmer bereits bezahlt hat, soll durch ein neues Symbol in der Übersicht aller Teilnehmer gekennzeichnet werden (so, wie es auch nach der Aktivierung der Bestätigung durch das Augensymbol links vom Namen gemacht wird).

    Über die DCA in "contao/dca/tl_event_registration.php" habe ich eine neue Checkbox in die Bearbeitungsmaske des Teilnehmers eingefügt. Das funktioniert soweit.

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_event_registration']['fields']['paid'] = [
        
    'label' => &$GLOBALS['TL_LANG']['tl_event_registration']['paid'],
        
    'inputType' => 'checkbox',
        
    'exclude' => true,
        
    'eval' => ['tl_class' => 'clr w50'],
        
    'sql' => ['type' => 'boolean''default' => false]
    ];
    PaletteManipulator::create()
        ->
    addField('paid''confirmed'PaletteManipulator::POSITION_AFTER)
        ->
    applyToPalette('default''tl_event_registration');

    Soweit, so gut... Jetzt kommt der Teil, wo ich gerade nicht weiterkomme.

    1.
    Wie erweitere ich die Darstellung der Teilnehmer-Liste um ein neues Symbol?

    2.
    Kann ich nach dem Speichern in der Bearbeitungsmaske (Checkbox - Kunde hat bezahlt) über einen EventListener eine im Notification Center erstellt Nachricht verschicken?

    Fällt jemanden ein direkter Lösungsweg ein?

    Freue mich über jede Art von Tip

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

    Standard

    1. https://docs.contao.org/dev/referenc...lar-operations size button_callback

    2. https://docs.contao.org/dev/referenc...lds-field-save Dort könntest Du as Versenden einer Notification triggern
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  3. #3
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Zitat Zitat von fiedsch Beitrag anzeigen
    1. https://docs.contao.org/dev/referenc...lar-operations size button_callback

    2. https://docs.contao.org/dev/referenc...lds-field-save Dort könntest Du as Versenden einer Notification triggern
    Danke für die Links. Ich versuche mich mal daran, befürchte aber, dass ich eine etwas genauere Hilfestellung brauche.

  4. #4
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Hallo fiedsch, ich glaube die button_callback Geschichte ist nicht genau das, was ich meinte, oder ich verstehe es noch nicht ganz Das Icon soll ja nichts auslösen, sondern nur angezeigt werden. Den Wechsel des Icons würde ich dann durch eine Abfrage, ob die Checkbox in der Eingabemaske true oder false ist, machen.

    Ich würde gerne ein zusätzliches Icon zwischen Augensymbol und Namen des Teilnehmers einfügen (siehe angehängten Screenshot). Kannst du mir dazu einen Hinweis geben?

    neues-icon-einsetzen.png

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

    Standard

    Diese Ansicht wird über einen child_record_callback von der Extension erzeugt: https://github.com/inspiredminds/con...ckListener.php
    » sponsor me via GitHub or PayPal or Revolut

  6. #6
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Diese Ansicht wird über einen child_record_callback von der Extension erzeugt: https://github.com/inspiredminds/con...ckListener.php
    Ja, das habe ich auch gefunden. Lege ich mir diesen Callback jedoch selber noch einmal unter src/EventListener/DataContainer an, wird das Augensymbol einfach überschrieben und nicht mein Icon hinzugefügt. Wo liegt mein Fehler?

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

    Standard

    Es kann nur einen child_record_callback geben - das heißt dein Callback muss das komplett implementieren, wenn du den vorhandenen überschreibst (mit priority > 0).
    Geändert von Spooky (31.01.2024 um 14:36 Uhr)
    » sponsor me via GitHub or PayPal or Revolut

  8. #8
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Es kann nur einen child_record_callback geben - das heißt dein Callback muss das komplett implementieren, wenn du den vorhanden überschreibst (mit priority > 0).
    Ok, werde ich mal versuchen

    Danke dir Spooky!

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

    Standard

    Im schlimmsten Fall kopierst du den ganzen Code. Du könntest den Bestehenden Listener aber auch in deinem Listener injecten und ausführen lassen - und dann das fertige HTML nochmal manipulieren, aber das ist halt auch keine besonders schöne Lösung (besser geht's mit diesen Callbacks aber nicht wirklich).
    » sponsor me via GitHub or PayPal or Revolut

  10. #10
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Hallo Spooky, die Einbindung des Icon in Verbindung mit dem Wert der Checkbox (paid) habe ich implementiert bekommen. Danke für die Hilfestellung

    Kannst du mir auch noch einen Hinweis geben, wie ich nun beim Speichern der Teilnehmer-Maske (in der ich ja dann den Haken für "bezahlt" gesetzt habe) eine Email (im besten Fall aus dem NotificationCenter) an den Teilnehmer schicken kann? Welchen Callback kann ich da nehmen, ohne die Funktionalität der Erweiterung zu stören?

    habe mir schon onsubmit ind save angesehen, komme da aber nicht wirklich vorwärts...

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

    Standard

    Wäre auf jeden Fall onsubmit, ja. // edit, hm, oder lieber ein save_callback auf die Notification Auswahl, damit du dort auch null zurück geben kannst, damit das nicht gespeichert wird. Die Thematik ist auf jeden Fall etwas komplexer und nicht in ein paar Zeilen Forum-Posts hier erklärt.
    » sponsor me via GitHub or PayPal or Revolut

  12. #12
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Wäre auf jeden Fall onsubmit, ja. // edit, hm, oder lieber ein save_callback auf die Notification Auswahl, damit du dort auch null zurück geben kannst, damit das nicht gespeichert wird. Die Thematik ist auf jeden Fall etwas komplexer und nicht in ein paar Zeilen Forum-Posts hier erklärt.
    Ok, dann muss ich das etwas einfacher aufbauen.
    Da sich der Text der Nachricht nicht wirklich ändert, könnte ich den auch fix machen und eine ganz normale Mail verschicken (ohne NC).

    Hier hänge ich jedoch gerade auch fest. Ob jetzt onsubmit oder save Callback, wie registriere ich noch mal gleich den Callback, damit die Datei auch aufgerufen wird? Muss ich das auch über die services.yml machen? Ich bin in keinem Bundle unterwegs.

    Ich würde jetzt folgende Datei mit diesem Inhalt anlegen:

    PHP-Code:
    // src/EventListener/DataContainer/EventParticipantSubmitCallback.php
    namespace App\EventListener\DataContainer;

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

    #[AsCallback(table: 'tl_event_registration', target: 'fields.text.save')]
    class EventParticipantSubmitCallback
    {
        public function 
    __invoke($valueDataContainer $dc)
        {
            
    // Show an error if tl_content.text contains "foobar"
            
    if (false !== stripos($value'foobar')) {
                throw new \
    Exception('String "foobar" is not allowed.');
            }

            
    // Or process the value before saving
            
    $value strtoupper($value);

            
    // Return the processed value
            
    return $value;
        }

    Wo deklariere ich denn die Angaben aus dem Kommentar (#[AsCallback(table: 'tl_event_registration', target: 'fields.text.save')])?

    Irgendwie stehe ich gerade auf dem Schlauch....

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

    Standard

    Zitat Zitat von pottkind Beitrag anzeigen
    Wo deklariere ich denn die Angaben aus dem Kommentar (#[AsCallback(table: 'tl_event_registration', target: 'fields.text.save')])?

    Irgendwie stehe ich gerade auf dem Schlauch....
    Wie meinst du das? Du hast sie ja schon deklariert . Das ist übrigens kein Kommentar, sondern ein PHP Attribute.
    » sponsor me via GitHub or PayPal or Revolut

  14. #14
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Zitat Zitat von pottkind Beitrag anzeigen
    Ok, dann muss ich das etwas einfacher aufbauen.
    Da sich der Text der Nachricht nicht wirklich ändert, könnte ich den auch fix machen und eine ganz normale Mail verschicken (ohne NC).

    Hier hänge ich jedoch gerade auch fest. Ob jetzt onsubmit oder save Callback, wie registriere ich noch mal gleich den Callback, damit die Datei auch aufgerufen wird? Muss ich das auch über die services.yml machen? Ich bin in keinem Bundle unterwegs.

    Ich würde jetzt folgende Datei mit diesem Inhalt anlegen:

    PHP-Code:
    // src/EventListener/DataContainer/EventParticipantSubmitCallback.php
    namespace App\EventListener\DataContainer;

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

    #[AsCallback(table: 'tl_event_registration', target: 'fields.text.save')]
    class EventParticipantSubmitCallback
    {
        public function 
    __invoke($valueDataContainer $dc)
        {
            
    // Show an error if tl_content.text contains "foobar"
            
    if (false !== stripos($value'foobar')) {
                throw new \
    Exception('String "foobar" is not allowed.');
            }

            
    // Or process the value before saving
            
    $value strtoupper($value);

            
    // Return the processed value
            
    return $value;
        }

    Wo deklariere ich denn die Angaben aus dem Kommentar (#[AsCallback(table: 'tl_event_registration', target: 'fields.text.save')])?

    Irgendwie stehe ich gerade auf dem Schlauch....
    Wenn ich zum Beispiel in die Funktion ein "dd('Hello');" schreiben, greift es beim Speichern nicht...

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

    Standard

    Du hast
    Code:
    #[AsCallback(table: 'tl_event_registration', target: 'fields.text.save')]
    geschrieben. tl_event_registration hat aber kein Feld namens text.
    » sponsor me via GitHub or PayPal or Revolut

  16. #16
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Du hast
    Code:
    #[AsCallback(table: 'tl_event_registration', target: 'fields.text.save')]
    geschrieben. tl_event_registration hat aber kein Feld namens text.
    Stimmt.
    Aber auch, wenn ich z.B. auf mein neu eingefügtes "paid" gehe, passiert nichts.

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

    Standard

    Mit
    Code:
    vendor/bin/contao-console debug:container EventParticipantSubmitCallback
    kannst du prüfen, ob dein Service richtig registriert und getagged ist.
    » sponsor me via GitHub or PayPal or Revolut

  18. #18
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Mit
    Code:
    vendor/bin/contao-console debug:container EventParticipantSubmitCallback
    kannst du prüfen, ob dein Service richtig registriert und getagged ist.
    No services found that match "EventParticipantSubmitCallback".
    Mit dem "deklariert" oben meinte ich eigentlich auch registrieren Muss ich also doch über die services.yml gehen?
    Geändert von pottkind (02.02.2024 um 14:42 Uhr)

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

    Standard

    Nein, sofern du nicht eine eigene services.yaml angelegt hast oder ein eigenes autoloading in der composer.json sollte es so funktionieren. Vorausgesetzt du bist im Debug Modus bzw. hast composer install danach ausgeführt.
    » sponsor me via GitHub or PayPal or Revolut

  20. #20
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Nein, sofern du nicht eine eigene services.yaml angelegt hast oder ein eigenes autoloading in der composer.json sollte es so funktionieren. Vorausgesetzt du bist im Debug Modus bzw. hast composer install danach ausgeführt.
    Ne, hatte keine services.yml angelegt. composer install hatte ich ausgeführt. Leider keine Ausgabe beim Speichern des Teilnehmers...

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

    Standard

    Zitat Zitat von pottkind Beitrag anzeigen
    Leider keine Ausgabe beim Speichern des Teilnehmers...
    Immer zuerst debug:container prüfen. Solange dein Service dort nicht richtig getagged auftaucht, wird es nicht funktionieren.

    - - - Aktualisiert - - -

    Moderation: Thema in das Entwickler-Fragen Unterforum verschoben.
    » sponsor me via GitHub or PayPal or Revolut

  22. #22
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Ich komme irgendwie nicht weiter.
    So, wie ich das jetzt verstanden habe, reicht es aus, die Datei "EventParticipantSubmitCallback.php" im Ordner "src/EventListener/DataContainer/" anzulegen.
    Der Inhalt, wie oben beschrieben und über das PHP Attribute "#[AsCallback(table: 'tl_event_registration', target: 'fields.paid.save')]" wird angegeben, in welcher Tabelle die Aktion stattfindet und das das Feld paid (Checkbox) durch Klick auf den Button Speichern und schließen gespeichert wird. In diesem Moment sollte der Callback greifen...

    Da ich keine services.yml oder einen autoloading Eintrag in der composer.json gemacht habe, sollte der Service automatisch registriert sein?

    Gibt es noch einen anderen Weg, den Service zu registrieren?

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

    Standard

    Zitat Zitat von pottkind Beitrag anzeigen
    Da ich keine services.yml oder einen autoloading Eintrag in der composer.json gemacht habe, sollte der Service automatisch registriert sein?
    Korrekt, ja. Hast du evt. <?php vergessen?
    » sponsor me via GitHub or PayPal or Revolut

  24. #24
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Korrekt, ja. Hast du evt. <?php vergessen?
    Nein, steht drin...
    Gibt es noch eine Möglichkeit, dass zu debuggen, wo der Fehler liegt?
    Geändert von pottkind (05.02.2024 um 11:10 Uhr)

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

    Standard

    Aus der Ferne fällt mir momentan nichts ein.
    » sponsor me via GitHub or PayPal or Revolut

  26. #26
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Ich habe den Service jetzt über eine neu angelegte services.yml registriert. So scheint es zu funktionieren. Kann man das so machen, oder kann es dann Probleme geben, wenn man es zusätzlich auf diese Weise einbindet?

  27. #27
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Mist, wenn ich es so mache, greift der ChildRecordCallbackListener nicht mehr... Verflixt...

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

    Standard

    Was genau hast du eingetragen?
    » sponsor me via GitHub or PayPal or Revolut

  29. #29
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Was genau hast du eingetragen?
    Code:
    services:
        _defaults:
            autoconfigure: true
    
        App\EventListener\DataContainer\EventParticipantSubmitCallback:
            tags:
                - { name: contao.callback, table: tl_event_registration, target: fields.paid.save, priority: 100 }
    Muss der 'ChildRecordCallbackListener.php' dann ebenfalls mit da rein, weil dann alle Registrierungen darüber laufen müssen?

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

    Standard

    Wenn du das so machst, musst du jeden Service einzeln eintragen, ja. Du könntest aber auch wie folgt vorgehen: https://docs.contao.org/dev/getting-...nd-controllers
    » sponsor me via GitHub or PayPal or Revolut

  31. #31
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Wenn du das so machst, musst du jeden Service einzeln eintragen, ja. Du könntest aber auch wie folgt vorgehen: https://docs.contao.org/dev/getting-...nd-controllers
    So, habe nun die services.yaml und die routes.yaml, sowie den Ordner src/Controller, wie in der Doku beschrieben angelegt.
    Führe ich nun "vendor/bin/contao-console debug:container EventParticipantSubmitCallback" in der Konsole aus, kommt zumindest schon mal keine Fehlermeldung mehr, sondern das hier

    Code:
    Information for Service "App\EventListener\DataContainer\EventParticipantSubmitCallback"
    ========================================================================================
    
     ---------------- ---------------------------------------------------------------- 
      Option           Value                                                           
     ---------------- ---------------------------------------------------------------- 
      Service ID       App\EventListener\DataContainer\EventParticipantSubmitCallback  
      Class            App\EventListener\DataContainer\EventParticipantSubmitCallback  
      Tags             -                                                               
      Public           no                                                              
      Synthetic        no                                                              
      Lazy             no                                                              
      Shared           yes                                                             
      Abstract         no                                                              
      Autowired        yes                                                             
      Autoconfigured   yes                                                             
     ---------------- ---------------------------------------------------------------- 
    
    
     ! [NOTE] The "App\EventListener\DataContainer\EventParticipantSubmitCallback" service or alias has been removed or 
     !        inlined when the container was compiled.
    Was bedeutes der Hinweis, dass der Service entfernt wurde?
    Mein dump in der Funktion meiner Klasse greift jedoch immer noch nicht.

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

    Standard

    Poste deine services.yaml und deinen Code. Da fehlen die Service Tags.
    » sponsor me via GitHub or PayPal or Revolut

  33. #33
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Poste deine services.yaml und deinen Code. Da fehlen die Service Tags.
    services.yaml
    Code:
    services:
        _defaults:
            autowire: true
            autoconfigure: true
    
        App\:
            resource: ../src
    
        App\Controller\:
            resource: ../src/Controller
            tags: ['controller.service_arguments']
    Welchen Code brauchst du noch? Den von der EventParticipantSubmitCallback.php?

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

    Standard

    Alles am besten
    » sponsor me via GitHub or PayPal or Revolut

  35. #35
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Alles am besten


    Die services.yaml hast du ja schon.

    Hier der Inhalt der routes.yaml
    Code:
    app.controller:
        resource: ../src/Controller
        type: annotation
    Der Inhalt der EventParticipantSubmitCallback.php im Ordner "src/EventListener/DataContainer/"
    PHP-Code:
    <?php

    namespace App\EventListener\DataContainer;

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

    #[AsCallback(table: 'tl_event_registration', target: 'fields.paid.save')]
    class EventParticipantSubmitCallback
    {
        public function 
    __invoke($valueDataContainer $dc)
        {
            
    dd('HIER');
            
    // Show an error if tl_content.text contains "foobar"
            
    if (false !== stripos($value'foobar')) {
                throw new \
    Exception('String "foobar" is not allowed.');
            }

            
    // Or process the value before saving
            
    $value strtoupper($value);

            
    // Return the processed value
            
    return $value;
        }
    }
    In der von mir duplizierten ChildRecordCallbackListener.php habe ich den namespace von
    Code:
    namespace InspiredMinds\ContaoEventRegistration\EventListener\DataContainer\EventRegistration;
    zu
    Code:
    namespace App\EventListener\DataContainer;
    angepasst, da es sonst beim composer install einen Fehler gab.

    So, dass müssten alle Anpassungen gewesen sein.

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

    Standard

    Bitte poste den Code aller deiner PHP Dateien unter src/, inkl. Pfade.
    » sponsor me via GitHub or PayPal or Revolut

  37. #37
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Bitte poste den Code aller deiner PHP Dateien unter src/, inkl. Pfade.
    Unter src/ liegt sonst nur noch ein leerer Ordner "Controller" "src/Controller" und das Duplikat der ChildRecordCallbackListener.php ebenfalls, wie die EventParticipantSubmitCallback.php, in src/EventListener/DataContainer/.

    Hier der Inhalt der angepassten ChildRecordCallbackListener.php:
    PHP-Code:
    <?php

    declare(strict_types=1);

    /*
     * This file is part of the Contao Event Registration extension.
     *
     * (c) inspiredminds
     *
     * @license LGPL-3.0-or-later
     */

    // namespace InspiredMinds\ContaoEventRegistration\EventListener\DataContainer\EventRegistration;
    namespace App\EventListener\DataContainer;

    use 
    Contao\CoreBundle\ServiceAnnotation\Callback;
    use 
    Contao\Image;
    use 
    Contao\StringUtil;
    use 
    InspiredMinds\ContaoEventRegistration\EventRegistration\LabelBuilder;

    /**
     * @Callback(table="tl_event_registration", target="list.sorting.child_record")
     */
    class ChildRecordCallbackListener
    {
        private 
    $labelBuilder;

        public function 
    __construct(LabelBuilder $labelBuilder)
        {
            
    $this->labelBuilder $labelBuilder;
        }

        public function 
    __invoke(array $row): string
        
    {
            
    $label = ($this->labelBuilder)($row);

            
    // Show all form data values as a fallback
            
    if (empty($label)) {
                
    $formData json_decode($row['form_data'] ?? ''true) ?: [];
                
    $label StringUtil::substr(implode(', 'array_filter($formData)), 128);
            }

            
    $icon 'visible_.svg';
            
    // custom start
            
    $icon_paid 'files/system/img/paid_.svg';
            
    // custom end

            
    if ($row['cancelled']) {
                
    $icon 'unpublished.svg';
            } elseif (
    $row['confirmed']) {
                
    $icon 'visible.svg';
            }

            
    // custom start
            
    if ($row['paid']) {
                
    $icon_paid 'files/system/img/paid.svg';
            }
            
    // custom end

            // $label = Image::getHtml($icon, '', ' style="float:left; margin-right:0.3em;"').' '.$label;
            // custom start
            
    $label Image::getHtml($icon''' style="float:left; margin-right:0.3em;"') . Image::getHtml($icon_paid''' style="float:left; margin-right:0.3em;"').' '.$label;
            
    // custom end

            
    return '<div class="tl_content_left">'.$label.'</div>';
        }
    }

  38. #38
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Hallo Spooky,
    konnte mich erst jetzt wieder an das Projekt setzen... Läuft leider immer noch nicht...

    Fällt dir an den Dateien, die ich eingebunden habe, ein Fehler auf?

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

    Standard

    Du solltest vielleicht noch einheitlich entweder Annotations oder Attributes verwenden, nicht beides vermischen (ist aber nur eine Code Style Frage).

    Beim ChildRecordCallbackListener solltest du auch noch eine Priority setzen.

    Poste die Ausgabe von
    Code:
    vendor/bin/contao-console debug:container EventParticipantSubmitCallback
    und
    Code:
    vendor/bin/contao-console debug:container ChildRecordCallbackListener
    » sponsor me via GitHub or PayPal or Revolut

  40. #40
    Contao-Nutzer
    Registriert seit
    01.04.2023.
    Beiträge
    65

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Du solltest vielleicht noch einheitlich entweder Annotations oder Attributes verwenden, nicht beides vermischen (ist aber nur eine Code Style Frage).

    Beim ChildRecordCallbackListener solltest du auch noch eine Priority setzen.

    Poste die Ausgabe von
    Code:
    vendor/bin/contao-console debug:container EventParticipantSubmitCallback
    und
    Code:
    vendor/bin/contao-console debug:container ChildRecordCallbackListener
    Wenn die Einbindung per Attribute funktioniert, kann ich versuchen, diese per Annotations einzubinden. Momentan funktionieren ja beide Varianten nicht...

    Code:
    Information for Service "App\EventListener\DataContainer\EventParticipantSubmitCallback"
    ========================================================================================
    
     ---------------- ---------------------------------------------------------------- 
      Option           Value                                                           
     ---------------- ---------------------------------------------------------------- 
      Service ID       App\EventListener\DataContainer\EventParticipantSubmitCallback  
      Class            App\EventListener\DataContainer\EventParticipantSubmitCallback  
      Tags             -                                                               
      Public           no                                                              
      Synthetic        no                                                              
      Lazy             no                                                              
      Shared           yes                                                             
      Abstract         no                                                              
      Autowired        yes                                                             
      Autoconfigured   yes                                                             
     ---------------- ---------------------------------------------------------------- 
    
    
     ! [NOTE] The "App\EventListener\DataContainer\EventParticipantSubmitCallback" service or alias has been removed or 
     !        inlined when the container was compiled.
    Code:
     Select one of the following services to display its information:
      [0] App\EventListener\DataContainer\ChildRecordCallbackListener
      [1] InspiredMinds\ContaoEventRegistration\EventListener\DataContainer\EventRegistration\ChildRecordCallbackListener
     > 0
    
    
    Information for Service "App\EventListener\DataContainer\ChildRecordCallbackListener"
    =====================================================================================
    
     ---------------- ----------------------------------------------------------------------------------- 
      Option           Value                                                                              
     ---------------- ----------------------------------------------------------------------------------- 
      Service ID       App\EventListener\DataContainer\ChildRecordCallbackListener                        
      Class            App\EventListener\DataContainer\ChildRecordCallbackListener                        
      Tags             contao.callback (table: tl_event_registration, target: list.sorting.child_record)  
      Public           yes                                                                                
      Synthetic        no                                                                                 
      Lazy             no                                                                                 
      Shared           yes                                                                                
      Abstract         no                                                                                 
      Autowired        yes                                                                                
      Autoconfigured   yes                                                                                
     ---------------- -----------------------------------------------------------------------------------

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

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