richardhj / contao-newsletter2go-sync

GNU Lesser General Public License v3.0
0 stars 1 forks source link

Fehlermeldung "member function getHttpClient() on null" #4

Open ghost opened 5 years ago

ghost commented 5 years ago

Hallo @richardhj

Sorry, ich nehme einen gemeldeten Fehler nochmals in einem eigenem Issue auf, weil er erneut erscheint und ich kann es nicht nachvollziehen.

Hier mal meine Vorarbeit in Contao 4.4.23.

Authentifizierung und Synchronisation ist eingerichtet und unter System -> Einstellungen unter n2g_sync_fields mal email und id eingefügt.

Bezüglich der Mitgliederverwaltung zeigt es mir folgendes Verhalten:

Ich füge neues Mitglied in Contao ein und wähle unter anderem die Sync-Mitgliedergruppe und speichere ab. Fehlermeldung erscheint:

Call to a member function getHttpClient() on null.

Log zeigt folgendes

[2019-02-24 14:37:40] request.INFO: Matched route "contao_backend". {"route":"contao_backend","route_parameters":{"_scope":"backend","_token_check":true,"_controller":"Contao\\CoreBundle\\Controller\\BackendController::mainAction","_route":"contao_backend"},"request_uri":"https://www.xyz.ch/contao?act=edit&do=member&id=12&ref=SqrF69WU&rt=_ULGsp2-VYUT6PycrveSEpUu2pGy_IGMhJgTbW1IFcc","method":"POST"} []
[2019-02-24 14:37:40] security.INFO: Attempting SimplePreAuthentication. {"key":"backend","authenticator":"Contao\\CoreBundle\\Security\\ContaoAuthenticator"} []
[2019-02-24 14:37:42] app.CRITICAL: An exception occurred. {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Call to a member function getHttpClient() on null at /home/xyz/public_html/pro/vendor/richardhj/newsletter2go-api/src/Model/NewsletterAttribute.php:125)"} []

Wird der Benutzer einer anderen Mitgliedergruppe zugewiesen, erscheint der Fehler nicht.

Abgesehen davon ist mir das gewünschte Synchronisationsverhalten nicht klar:

Es sollte nach meinem Empfinden alle Empfänger aus der Newsletter2Go-Gruppe initial in die betreffende Mitgliedergruppe in Contao importieren und danach synchronisieren, nicht? Und wenn ich in Contao ein neues Mitglied in dieser Gruppe zuweise, dann sollte es in Newsletter2Go in die synchronsierte Gruppe ebenfalls einfügen, nicht?

Oder verstehe ich das komplett falsch?

Danke dir schon mal für deinen Support!

Daniel

richardhj commented 5 years ago

Hi Daniel,

der Fehler tritt nur auf, wenn du ein benutzerdefiniertes Attribut synchronisieren willst.

Einstellungen unter n2g_sync_fields mal email und id eingefügt.

ID ist in dem Fall ein Merkmal, was bei Newsletter2Go manuell erstellt werden muss. Der Fehler ist in 6bfdc0b1b3c3a62b782543a244c207e0d44aac31 bzw. v2.1-alpha.8 behoben.

richardhj commented 5 years ago

Es sollte nach meinem Empfinden alle Empfänger aus der Newsletter2Go-Gruppe initial in die betreffende Mitgliedergruppe in Contao importieren und danach synchronisieren, nicht?

Das ist aktuell nicht der Fall. Zum "initialen Synchronisieren" bitte zuerst mit Hilfe von "Mehrere bearbeiten" alle Datensätze markieren und das Feld Mitgliedergruppe aufrufen und abspeichern. Bei vielen Mitgliedern kann es dann passieren, dass du in ein Timeout gerätst, dann einfach in Teilmengen markieren/abspeichern.

ghost commented 5 years ago

Hallo Richard,

Super! Danke für die schnelle Reaktion! Okay, der Fehler taucht nun nicht mehr auf.

ID ist in dem Fall ein Merkmal, was bei Newsletter2Go manuell erstellt werden muss.

Die id selber scheint systembedingt in N2G schon vorhanden zu sein. Zumindest konnte ich sie nicht erstellen. Ich habe weiterhin email und id bei den Contao als Sync-Felder drin.

Ich habe mal folgendes gemacht: Mitglied in Contao erstellt und der bei den Mitgliedergruppen der synchronisierten N2G-Gruppe zugewiesen. Die E-Mail-Adresse ist in N2G bereits als Empfänger vorhanden. Folgender Fehler erscheint bei der Mitgliedergruppe:

screenshot

Client error: `POST https://api.newsletter2go.com/attributes` resulted in a `422 Unprocessable Entity` response:
{
"status": 422,
"code": 10005,
"errorMessage": "Error during input validation",
"moreInfo": {
" (truncated...)

Im Log-File habe ich nichts gefunden. Das selbe passiert aber auch, wenn der Empfänger noch nicht in N2G ist.

Seltsamerweise hat es aber auch schon mal geklappt, dass das Mitglied dann in der Gruppe in N2G erschien. Ich kann aber es aber nicht mehr rekonstruieren, was ich anders gemacht habe. Momentan funktioniert es aber nicht, obwohl ich alles genauso mache.

Einfach für mein Verständnis, wie es sein sollte, wenn alles funktioniert:

Ist es Bedingung, dass die Empfänger-Verwaltung letztendlich nur über Contao läuft und quasi Contao --> N2G dann einweg synchronisiert wird? Dann wären die Anmelde-/Abmeldeformular von N2G meines Erachtens obsolet und müssten ausgetauscht werden. Oder werden Anpassungen in N2G auch nach Contao synchronisiert? Sprich, wenn ich einen Empfänger aus der Gruppe in N2G (!) lösche, wird dann die Mitgliedschaft in der Contao-Gruppe beim entsprechenden Mitglied auch deaktiviert? Ich vermute, dass ich dafür die Sync-Felder ergänzen müsste, oder?

Sorry, dass ich dich damit löchere, aber momentan bin ich ein bisschen der Esel vor dem Berg ;-). Und bei 1000 N2G-Empfänger muss ich etwas vorsichtig sein...

LG Daniel

richardhj commented 5 years ago

Beim Synchronisieren der ID gab es tatsächlich einen Fehler.

screen shot 2019-02-24 at 20 20 15

Habe das gefixt in 8e54e95a11667bcc4e0f722f617544188e432ad8. Brauchst du wirklich die Contao ID in N2G?

Ist es Bedingung, dass die Empfänger-Verwaltung letztendlich nur über Contao läuft und quasi Contao --> N2G dann einweg synchronisiert wird? Dann wären die Anmelde-/Abmeldeformular von N2G meines Erachtens obsolet und müssten ausgetauscht werden.

Die Synchronisation ist eine Richtung Contao -> N2G. Das Subscription Formular von N2G würde ich nur verwenden, wenn diese Abonnenten entsprechend in eine andere Gruppe eingetragen werden.

Sprich, wenn ich einen Empfänger aus der Gruppe in N2G (!) lösche, wird dann die Mitgliedschaft in der Contao-Gruppe beim entsprechenden Mitglied auch deaktiviert?

Genau das ist nicht der Fall. Speicherst du den Datensatz in Contao wieder, werden wieder Gruppen von den Mitgliedergruppen synchronisiert.

ghost commented 5 years ago

Hallo Richard

Anfangs hat es prima funktioniert. Nach ein paar Tests aber leider nicht mehr. Was ich dazwischen gemacht habe: Bei den Sync-Felder habe ich nach den ersten erfolgreichen Tests firstname, lastname und gender noch eingegeben. Die gleiche Fehlermeldung ist bei der nächsten Mitglieder-Eingabe danach wieder erschienen, auch nachdem ich die drei Felder wieder gelöscht habe. Auch nach Abmeldung, Prod-Cache löschen und mit x beliebigen Mitgliederangaben... Weiss nicht, ob es damit einen Zusammenhang gibt, aber es scheint so.

Brauchst du wirklich die Contao ID in N2G?

Nein, die ID brauche ich eigentlich nicht zwingend. Also, zumindest wüsste ich nicht weshalb. Nur, löschen kann ich sie bei den Systemeinstellungen aus den Sync-Feldern eben auch nicht.

Danke noch wegen deinen Sync-Erläuterungen. Da ist mir jetzt sehr vieles klarer geworden.

Ich habe mich bislang lustigerweise ausschliesslich auf die Synchronisation über die Contao-Mitgliedergruppen fokussiert, was aber zu Problemen in Verbund mit dem bereits vorhandenen Mitgliederbereich (Registration, doppelte E-Mail-Adressen etc.) führen würde. Viel besser wäre die Synchronisation via Contao-Newsletter-Verteiler. Dort finde ich aber keine Sync-Aktivierung, welche aber gemäss deiner Beschreibung vorhanden sein müsste, oder?

Mit Gruss Daniel