Seminarmanager 4.1.5RC7: Fehlermeldung beim Versuch, PDF-Formulare zu generieren. Was fange ich mit dem Debug-Resultat an?

  • Joomla Version
    4.3.3
    PHP Version
    PHP 8.0.x
    Hoster
    www.all-inkl.com

    Hallo Community,


    kann mir bitte jemand auf die Sprünge helfen?

    Nachdem die Erzeugung von PDF-Dateien im Seminarmanager Version: 4.1.5RC7 mittels mPDF bis vor einigen Tagen bereits problemlos funktionierte*, erhalte ich heute bei jedem Versuch, ein beliebiges PDF-Formular zu generieren, die Fehlermeldung:

    0 WriteHTML() requires $html be an integer, float, string, boolean or an object with the __toString() magic method.


    *)In der Zwischenzeit habe ich die J4-Webseite weiterentwickelt und u. a. die Migration der J3-Daten des Seminarmanagers nach J4 durchgeführt. Offenbar ist dabei ein verstecktes Problem aufgetreten (oder ich habe einen Fehler gemacht), das/den ich erst heute bemerkte, als ich die PDF-Formulare weiterbearbeiten wollte.


    Beim Debuggen (Fehler berichten: Maximum) erhalte ich die u. g. Tabelle. Mit dem Debuggen kenne ich mich nicht aus. Wie muss ich die ausgeworfene Tabelle lesen und was muss ich daraus ableiten? M. E. kann der Fehler nur an einer Stelle stecken. Aber wo?


    Call stack

    #

    Function

    Location

    1

    ()

    JROOT/libraries/mpdf/vendor/mpdf/mpdf/src/Mpdf.php:13188

    2

    Mpdf\Mpdf->WriteHTML()

    JROOT/administrator/components/com_seminarman/src/Classes/PdfDocument.php:63

    3

    Seminarman\Component\Seminarman\Administrator\Classes\PdfDocument->addHTMLBox()

    JROOT/administrator/components/com_seminarman/src/Controller/PdftemplateController.php:46

    4

    Seminarman\Component\Seminarman\Administrator\Controller\PdftemplateController->pdf_preview()

    JROOT/libraries/src/MVC/Controller/BaseController.php:678

    5

    Joomla\CMS\MVC\Controller\BaseController->execute()

    JROOT/libraries/src/Dispatcher/ComponentDispatcher.php:143

    6

    Joomla\CMS\Dispatcher\ComponentDispatcher->dispatch()

    JROOT/libraries/src/Component/ComponentHelper.php:361

    7

    Joomla\CMS\Component\ComponentHelper::renderComponent()

    JROOT/libraries/src/Application/AdministratorApplication.php:143

    8

    Joomla\CMS\Application\AdministratorApplication->dispatch()

    JROOT/libraries/src/Application/AdministratorApplication.php:186

    9

    Joomla\CMS\Application\AdministratorApplication->doExecute()

    JROOT/libraries/src/Application/CMSApplication.php:293

    10

    Joomla\CMS\Application\CMSApplication->execute()

    JROOT/administrator/includes/app.php:61

    11

    require_once()

    JROOT/administrator/index.php:32


    Viele Grüße, Kallle

  • Wo kommt denn die mPDF-Bibliothek her? Welche Version ist es?


    Weil in der aktuellen ist es eine andere Zeile uund leider schnitzen immer mal wieder Entwickler an diesen PDF-Bibliotheken rum und...


    Und gibt es nicht längst eine stabile Version des Semainarmanagers für Joomla 4, weil dann solltest du eigentlich Support bei denen haben(?) (blickt ja keiner durch bei deren Seite ;) )


    Egal.


    Auch wenns dir nicht hilft. Es geht wohl um diese Zeilen: https://github.com/mpdf/mpdf/b…rc/Mpdf.php#L13210-L13215


    Und in dieser Zeile deiner Erweiterung, wird in dem WriteHTML()-Aufruf wohl was Ungültiges übergeben: JROOT/administrator/components/com_seminarman/src/Classes/PdfDocument.php:63


    Bisschen schräg kompliziert ist die Fehlermeldung natürlich, weil sie nur sagt, was nicht ist, aber nicht, was denn übergeben wurde. NULL vielleicht?

  • Wo kommt denn die mPDF-Bibliothek her? Welche Version ist es?


    Weil in der aktuellen ist es eine andere Zeile uund leider schnitzen immer mal wieder Entwickler an diesen PDF-Bibliotheken rum und...

    mPDF 8.1.0. Hier heruntergeladen (https://github.com/cmextension/mpdf/releases) und im Seminarmanager aktiviert. Hat ja zu Beginn (vor dem Import bzw. der Migration der Semman-DB aus J3) auch problemlos funktioniert. Aber jetzt kann ich nicht mal mehr neue PDF-Dokumente erstellen. Deshalb denke ich nicht, dass es an falsch importierten PDF-Daten liegt.

    Zitat

    Und gibt es nicht längst eine stabile Version des Semainarmanagers für Joomla 4, weil dann solltest du eigentlich Support bei denen haben(?) (blickt ja keiner durch bei deren Seite ;) )

    Leider nein. Die aktuelle Version ist die 4.1.5RC7. Ist wohl eine schwere Geburt.

    Ich habe mich zuerst hier an das Joomla-Forum gewandt, weil ich (immer noch) hoffe, dass wenn mir jemand bei der Debug-Tabelle (allgemein) auf die Sprünge hilft, ich den Fehler vielleicht selbst einkreisen und beseitigen kann.

    Aber ich werde das Problem auch noch bei Webtribute beschreiben - wenn ich nicht weiterkomme.

    Zitat

    Auch wenns dir nicht hilft. Es geht wohl um diese Zeilen: https://github.com/mpdf/mpdf/b…rc/Mpdf.php#L13210-L13215


    Und in dieser Zeile deiner Erweiterung, wird in dem WriteHTML()-Aufruf wohl was Ungültiges übergeben: JROOT/administrator/components/com_seminarman/src/Classes/PdfDocument.php:63


    Bisschen schräg kompliziert ist die Fehlermeldung natürlich, weil sie nur sagt, was nicht ist, aber nicht, was denn übergeben wurde. NULL vielleicht?

    Vielen Dank für den Tipp. Ich werde mein Glück versuchen.


    Dann werde ich die mPDF 8.1.0 (ist immer noch "latest") noch einmal herunterladen, installieren und mal schau'n was dann passiert. Wenn das nichts bringt, bügele ich den Seminarmanager einfach noch einmal drüber. Wenn auch das nichts bringt: das gleiche Spiel mit dem Joomla-Kern.

    Und sollte das alles nicht weiter helfen, ist es wohl an der Zeit, aus dem Fenster zu springen ... =O


    Ach ja: Jetzt erst sehe ich, dass in der Debug-Einstellung auch im Frontend Warnungen gezeigt werden:


    Warning: Undefined array key "login" in /www/htdocs/w01bafe2/sptransj4/libraries/src/Component/Router/Rules/StandardRules.php on line 197


    Warning: Attempt to read property "key" on null in /www/htdocs/w01bafe2/sptransj4/libraries/src/Component/Router/Rules/StandardRules.php on line 199


    Warning: Undefined array key "profile" in /www/htdocs/w01bafe2/sptransj4/libraries/src/Component/Router/Rules/StandardRules.php on line 197


    Warning: Attempt to read property "key" on null in /www/htdocs/w01bafe2/sptransj4/libraries/src/Component/Router/Rules/StandardRules.php on line 199


    Warning: Undefined array key "bookings" in /www/htdocs/w01bafe2/sptransj4/libraries/src/Component/Router/Rules/StandardRules.php on line 197


    Warning: Attempt to read property "key" on null in /www/htdocs/w01bafe2/sptransj4/libraries/src/Component/Router/Rules/Standard


    Seufz! :rolleyes:

  • DIe Warnings sind erst mal unerheblich. Trotzdem solltest du Debug auch immer wieder abschalten, wenn du das PDF-Dingens testest, weil dann u.U. so Warnings doch zu Fehlern führen können.


    Ich habe übrigens nicht gesagt, dass die PDF-Bibliothek unbedingt das Problem ist, sondern es ist schon der Seminarmanager, der was Falsches übergibt. Einzubinden scheint er ja die mPdf, sonst könnte die ja nicht den Fehler anzeigen.

  • Hallo Re:Later,


    gerade habe ich den Fehlerteufel gefunden: Der war ich nämlich selbst! Mit der DB-Migration hatte es nichts zu tun.


    Weil ich mir alle nur möglichen Optionen der Darstellung der Admin-Seminarmanageroberfläche im Backend offenhalten wollte, dachte ich, es sei eine gute Idee, sämtliche dafür vorgesehenen Overridedateien im Backendbereich schon mal "auf Verdacht" in den Atum\html-Ordner zu transferieren. So könnte ich später hier und da schnell eingreifen, wenn es individuelle Darstellungswünsche gibt.


    Leichtsinnigerweise bin ich davon ausgegangen, dass, solange ich nichts ändere, die Overrides in spe keinen Schaden anrichten, weil sie ja exakt denselben Code tragen, wie die eigentlichen PHP-Dateien.


    Jetzt habe ich gelernt, dass irgendwas an meiner Annahme nicht ganz stimmt, denn nachdem ich den ganzen Overrideordner für com_seminarman deaktiviert hatte, war der Fehler weg! Die PDFs werden wieder alle erzeugt und angezeigt. Auf die detaillierte Fehlersuche verzichte ich. Der Wissensgewinn, dass man im Bereich der Overrides nicht leichtsinnigerweise schon mal was auf Verdacht vorbereiten darf, reicht mir.

    Ich freue mich und kann heute Nacht bestimmt wieder besser schlafen! :)