Ergebnis 1 bis 15 von 15

Thema: Senden einer Nachricht aus Code geht nicht mehr nach Update von NC1.7 auf NC2?

  1. #1
    Contao-Nutzer
    Registriert seit
    03.12.2014.
    Beiträge
    68

    Standard Senden einer Nachricht aus Code geht nicht mehr nach Update von NC1.7 auf NC2?

    Moin zusammen,
    ich habe bisher unter NC 1.7 in einer (Frontend) Templatedatei auf diese Art Notifications senden lassen:

    PHP-Code:
    $intNotificationId '42'    
    $arrTokens = ['order' => $orderItems'tax' => $full_tax'sum' => $grandTotal'email' => $email'transaction_id' => $transaction_id];
    $objNotification = \NotificationCenter\Model\Notification::findByPK($intNotificationId);

        if (
    null !== $objNotification) {
            
    $objNotification->send($arrTokens);
        } 
    Wir aktualisieren die Site nun und bereiten auf einen Umzug auf C5.3 vor. Im Zuge dessen wurde NC auf die aktuelle 2.0.x angehoben... und nun funktioniert das hier leider nicht mehr. Ich wäre sehr dankbar, wenn mir jemand zeigen könnte, wie ich das nun für NC2 umschreiben müsste?

    Ich danke euch!

  2. #2
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.452
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

  3. #3
    Contao-Nutzer
    Registriert seit
    03.12.2014.
    Beiträge
    68

    Standard

    Danke Cliff, das hatte ich gesehen und versucht aber ich weiß nicht wie ich es auf meinen (Frontend)-Template-Fall übertragen kann?

  4. #4
    Contao-Nutzer
    Registriert seit
    03.12.2014.
    Beiträge
    68

    Standard

    Hallo zusammen,

    ich habe mich jetzt noch mal damit beschäftigt und ich frage mich gerade, warum das eigentlich nicht mehr gehen soll... In dem Readme File, welches bei den Installationsdateien dabei ist, steht das ja noch genau so drin.

    Ich habe es jetzt mal in einer zweiten Installation versucht und da ist das gleiche Problem. Im Log steht:

    HTML-Code:
    [2024-05-16T11:25:41.531763+02:00] request.INFO: Matched route "tl_page.22". {"route":"tl_page.22","route_parameters":{"_token_check":true,"_controller":"Contao\\FrontendIndex::renderPage","_scope":"frontend","_locale":"de","_format":"html","_canonical_route":"tl_page.22","parameters":"","pageModel":{"Contao\\PageModel":[]},"_route":"tl_page.22","_route_object":{"Contao\\CoreBundle\\Routing\\Page\\PageRoute":[]}},"request_uri":"https://example.com/coaching-buchen","method":"GET"} {"request_uri":"https://example.com/coaching-buchen","request_method":"GET"}
    [2024-05-16T11:25:41.590394+02:00] request.CRITICAL: Uncaught PHP Exception Error: "Class "NotificationCenter\Model\Notification" not found" at ce_html_coaching_cart.html5 line 6 {"exception":"[object] (Error(code: 0): Class \"NotificationCenter\\Model\\Notification\" not found at /var/www/clients/client1/web312/web/templates/layout/ce_html_coaching_cart.html5:6)"} {"request_uri":"https://example.com/coaching-buchen","request_method":"GET"}
    [2024-05-16T11:25:41.600777+02:00] messenger.INFO: Sending message Contao\CoreBundle\Messenger\Message\SearchIndexMessage with contao_prio_low sender using Contao\CoreBundle\Messenger\Transport\AutoFallbackTransport {"class":"Contao\\CoreBundle\\Messenger\\Message\\SearchIndexMessage","alias":"contao_prio_low","sender":"Contao\\CoreBundle\\Messenger\\Transport\\AutoFallbackTransport"} {"request_uri":"https://example.com/coaching-buchen","request_method":"GET"}
    [2024-05-16T11:25:41.600871+02:00] messenger.INFO: Received message Contao\CoreBundle\Messenger\Message\SearchIndexMessage {"class":"Contao\\CoreBundle\\Messenger\\Message\\SearchIndexMessage"} {"request_uri":"https://example.com/coaching-buchen","request_method":"GET"}
    [2024-05-16T11:25:41.601233+02:00] messenger.INFO: Message Contao\CoreBundle\Messenger\Message\SearchIndexMessage handled by Contao\CoreBundle\Messenger\MessageHandler\SearchIndexMessageHandler::__invoke {"class":"Contao\\CoreBundle\\Messenger\\Message\\SearchIndexMessage","handler":"Contao\\CoreBundle\\Messenger\\MessageHandler\\SearchIndexMessageHandler::__invoke"} {"request_uri":"https://example.com/coaching-buchen","request_method":"GET"}
    Es scheint die angegebene Klasse nicht gefunden zu werden ... Aber warum? Sie ist da... Ich "sehe" sie... Ich stehe leider total auf dem Schlauch und wäre für ein paar helfende Kommentare sehr dankbar

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

    Standard

    Diese Klasse gibt es in NC 2.x nicht mehr.

    Wie du in NC 2.x eine Notification sendest ist hier ganz oben beschrieben: https://extensions.terminal42.ch/doc...en/developers/
    » sponsor me via GitHub or PayPal or Revolut

  6. #6
    Contao-Nutzer
    Registriert seit
    03.12.2014.
    Beiträge
    68

    Standard

    Ohje, ich bin echt zu doof ... ich habe nach dem Update des NCs, die lokale Sync-Version der IDE nicht aktualisiert und deshalb immer noch die Klasse angeboten bekommen

    Anyhow, die neue Doku hatte ich gesehen aber ich bin noch nicht so weit, daraus die notwendigen Schritte für ein Frontend-Template ableiten zu können.

    Das alleine reicht ja nicht ...

    PHP-Code:
    $intNotificationId '1';
    $arrTokens = ['order' => 'Bestellung''sum' => '100 EUR''email' => 'paul@paulsen.net''transaction_id' => '1234567890'];

    $receipts $this->notificationCenter->sendNotification($intNotificationId$arrTokens); 
    Wie müsste ich das denn verändern, damit ich die Nachricht so senden kann?
    Vielen Dank!

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

    Standard

    Zitat Zitat von Brubbel Beitrag anzeigen
    Anyhow, die neue Doku hatte ich gesehen aber ich bin noch nicht so weit, daraus die notwendigen Schritte für ein Frontend-Template ableiten zu können.
    Warum willst du aus einem Template heraus eine Notification senden?
    » sponsor me via GitHub or PayPal or Revolut

  8. #8
    Contao-Nutzer
    Registriert seit
    03.12.2014.
    Beiträge
    68

    Standard

    Also im konkreten Fall verwende ich es für ein kleines Zahlungsmodul von Paypal. Wenn der Kauf erfolgreich war, möchte ich eine Auftragsbestätigung mit ein paar Zusatzinfos an den Käufer senden... Transaktions-ID von Paypal, bissle mehr Beschreibung, ein paar Infos noch aus einer DB in der ich auch die Transkations-ID hinterlege und eben überhaupt eine Bestätigung, dass der Käufer was in der Hand hat. Nach dem Approve von Paypal mache ich also direkt einen Ajax-Request, stelle die benötigten Infos/Aktionen per PHP zusammen und dabei schicke ich auch auf die obige Art und Weise die Nachricht los... Mail an Kunde und an Verkäufer. Das klappte alles wunderbar bisher. Vor allem war mir wichtig, keine Reloads zu haben und ggf. einen Spinner einzusetzen.

    Ich fand das eigentlich super praktisch auf so eine Art ganz kurz und schnell so ein Mail mit den entsprechenden Werten zu füllen und abzuschicken.

    Also wenn Du mir zeigen könntest, wie ich das jetzt unter NC2.x anstellen kann, die Nachricht zu versenden, wäre das suuuper ;-) Danke!

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

    Standard

    Naja, aber hast du für deine PayPal Implementation keinen Service, der alles handhabt? Dort würdest du dir den NotificationCenter Service injecten und nutzen.

    Ansonsten könntest du in einem Template noch folgendes versuchen:
    PHP-Code:
    use Contao\System;
    use 
    Terminal42\NotificationCenterBundle\NotificationCenter;

    // …

    System::getContainer()->get(NotificationCenter::class)
        ->
    sendNotification($notificationId$tokens)

    Ich vermute aber, dass dieser Service nicht public ist und das daher nicht funktioniert.
    » sponsor me via GitHub or PayPal or Revolut

  10. #10
    Contao-Nutzer
    Registriert seit
    03.12.2014.
    Beiträge
    68

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Naja, aber hast du für deine PayPal Implementation keinen Service, der alles handhabt? Dort würdest du dir den NotificationCenter Service injecten und nutzen..
    Tja, wenn ich wüsste wie das alles geht, dann hätte es wohl diese Frage hier nicht geben müssen .

    Ich probiere das nachher mal aus - Danke Dir schon mal ganz herzlich!

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

    Standard

    Zitat Zitat von Brubbel Beitrag anzeigen
    Tja, wenn ich wüsste wie das alles geht, dann hätte es wohl diese Frage hier nicht geben müssen .
    Irgendwas hast du ja implementiert - wir wissen halt nicht wie deine Implementation aussieht
    » sponsor me via GitHub or PayPal or Revolut

  12. #12
    Contao-Nutzer
    Registriert seit
    03.12.2014.
    Beiträge
    68

    Standard

    Haha, ja, da hast Du natürlich Recht ;-)

    Ich benutze das PayPal JavaScript SDK. Ich habe ein eigenes Inhaltselement und in dessen Template sitzt die Logik für die Paypal-Anbindung.

    Deine Vermutung mit der fehlenden Öffentlichkeit scheint richtig zu sein ... Das hier kommt im LOG:

    HTML-Code:
    [2024-05-16T14:52:11.049490+02:00] request.CRITICAL: Uncaught PHP Exception Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException: "The "Terminal42\NotificationCenterBundle\NotificationCenter" service or alias has been removed or inlined when the container was compiled. You should either make it public, or stop using the container directly and use dependency injection instead." at Container.php line 249 {"exception":"[object] (Symfony\\Component\\DependencyInjection\\Exception\\ServiceNotFoundException(code: 0): The \"Terminal42\\NotificationCenterBundle\\NotificationCenter\" service or alias has been removed or inlined when the container was compiled. You should either make it public, or stop using the container directly and use dependency injection instead. at /var/www/clients/client1/web312/web/vendor/symfony/dependency-injection/Container.php:249)"} {"request_uri":"https://example.com/coaching-buchen","request_method":"GET"}
    Geändert von Brubbel (16.05.2024 um 14:00 Uhr) Grund: Rechtschreibung

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

    Standard

    Und wie hast du das Template überhaupt eingebunden?
    » sponsor me via GitHub or PayPal or Revolut

  14. #14
    Contao-Nutzer
    Registriert seit
    03.12.2014.
    Beiträge
    68

    Standard

    Ich habe ein eigenes Inhaltselement "Produktbox" erstellt (mit Hilfe der PCT CustomElements Erweiterung) und dort "ganz normal" ein .html5 Files als Template für die HTML Struktur verwendet. Dort ist auch das PayPal Gedöns für den einfachen Checkout drin. Es gibt dann eine extra Seite (soweit leer), die nur ein html Inhaltselement hat. Diese wird von jQuery.ajax angesprochen und in dem Template zum html Inhaltselement wird dann u.a. die besagte Nachricht über das NC gesendet.

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

    Standard

    Dieses Inhaltselement ersetzt du nun mit einem richtigen Inhaltselement, wo du dir den NotificationCenter Service injecten lassen kannst.
    » 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
  •