Ergebnis 1 bis 33 von 33

Thema: Eigenes Modul nach umstellung auf Contao 5 wird im Artikel nicht dargestellt

  1. #1
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.455

    Standard Eigenes Modul nach umstellung auf Contao 5 wird im Artikel nicht dargestellt

    Hallo, ich habe vor Jahren ein Minimodul mit einer Frontend-Ausgabe erstellt. Jetzt hab ich es auf Contao 5.x umgestellt. Soweit funktioniert das Modul im Backend.

    Was aber nicht funktioniert ist, wenn ich das Modul in einem Artikel einfüge. Ich kann es einfügen, aber es wird mir nicht angezeigt. Es steht im Backend nur Modul. Wenn ich aber auf Bearbeiten gehe, kommte ich zum Element Modul und da ist es auch ausgewählt.
    Im Frontend wird es mir nicht in den Quellcode eingebunden. Unter Contao 4.13 funktioniert es tatellos.
    Was hab ich übersehen?
    LG, Andi

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

    Standard

    Debug-Modus schon mal angeschaltet um zu schauen, ob das Template auch ins Frontend übergeben wird?

  3. #3
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.455

    Standard

    Hallo, ja, hab den Debugmodus jetzt laufen. Ich weiß nicht mehr, wo ich den Fehler finde.

    Folgendes sagt mir der Debugmodus: "Module class "Webmails\ModuleWebmailList" (module "webmail_list") does not exist"

    und genau hier steh ich an. Ich weiß nicht, was hier falsch läuft und wo ich noch suchen könnte.
    LG, Andi

  4. #4
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Hast du die Klasse in der service.yml oder ähnliches bekannt gemacht?
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  5. #5
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.455

    Standard

    Nein, hab jetzt aber mal den "Contao Bundle Generator" installiert und dort mein Projekt angelegt.

    Jetzt hab ich mal alles angepasst, wie dca usw. Jetzt funktioniert die Frontend-Ausgabe. Muss nur noch einiges umstellen und dann sollt's das gewesen sein.
    LG, Andi

  6. #6
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.455

    Standard

    Hallo,

    mein Modul funktioniert prima im Backend. Ich kann die Daten dort eingeben und alles funktioniert wie es soll.
    Ich kann auch das Modul unter Frontend Modul auswählen und auch eines der beiden Templates, die für dieses Modul zur verfügung stehen.

    Jetzt steh ich an. Ich weiß nicht, wie ich jetzt die Daten aus der DB ersichtlich machen kann im FE. Es wird NICHTS übergeben. Hab den Debug-Modus auch aktiviert. Es kommt nichts.

    Ich steh voll an. Kann mir bitte jemand helfen? Was benötig ihr diesbezüglich von mir?
    LG, Andi

  7. #7
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.455

    Standard

    So, das mit der Ausgabe im Frontend hab ich geschafft. Ich musste nur noch ein paar Klassen anpassen.

    Jetzt ist es aber so, dass immer nur das 1. Tempalte im FE angezeigt wird.

    In meinem Modul "ModuleWebmailList.php" habe ich
    PHP-Code:
    protected $strTemplate 'mod_webmail_list_all'
    Daher wird jetzt immer dieses Tempalte herangezogen und nicht jenes, welches ich im BE im Modul ausgewählt habe.

    Das bekomm ich einfach nicht hin, dass mir das gewählte Template im FE angezeigt wird.
    LG, Andi

  8. #8
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    PHP-Code:
                if (($this->visitors_template != $this->strTemplate) && ($this->visitors_template != ''))
                {
                    
    $this->strTemplate $this->visitors_template;
                    
    $this->Template = new FrontendTemplate($this->strTemplate);
                } 
    "visitors_template" ist beim mir der Name im DCA von Modul, wo man das Template dann auswähen kann.
    Alle Felder die du in tl_module.php in der Palette zur Anzeige definiert hast, kannst du mit $this-><name> zugreifen in der compile Methode.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  9. #9
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.455

    Standard

    Danke, das funktioniert primat.
    LG, Andi

  10. #10
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.455

    Standard

    Hm, jetzt hab ich noch eine Frage.

    Ich hab in meinem Modul unter dem Ordner "contao" einen Ordner mit "classes" erstellt. Dann hab ich die Datei "DcaWebmail.php" erstellt. In dieser Datei hab ich folgenden Code:
    PHP-Code:
    namespace Webmail\ContaoWebmail;
    class 
    DcaWebmail extends Backend
    { ..... 
    im Ordner "dca" in der Datei "tl_webmail.php hab ich folgenden Code:
    PHP-Code:
    'toggle' => array
                (
                    
    'label'               => &$GLOBALS['TL_LANG']['tl_webmail']['toggle'],
                    
    'icon'                => 'visible.svg',
                    
    'attributes'          => 'onclick="Backend.getScrollOffset(); return AjaxRequest.toggleVisibility(this, %s);"',
                    
    'button_callback'     => array('Webmail\ContaoWebmail\DcaWebmail''toggleIcon')
                ), 
    Jetzt bekomme ich die Meldung:
    System::importStatic() failed because class "Webmail\ContaoWebmail\DcaWebmail" is not a valid class name or does not exist.
    So sieht meine services.yaml-Datei aus:
    Code:
    services:
        _defaults:
            autowire: true          # Automatically injects dependencies in your services.
            autoconfigure: true     # Automatically registers your services as commands, event subscribers, etc.
            public: false           # Allows optimizing the container by removing unused services; this also means
                                    # fetching services directly from the container via $container->get() won't work.
                                    # The best practice is to be explicit about your dependencies anyway.
            bind:
                #$projectDir: '%kernel.project_dir%'
    
        Webmail\ContaoWebmail\:
            resource: ../src/
            exclude: ../src/{DependencyInjection,Model,Session}
    Hier ist der /scr/ ordner angegeben, aber ich bin im "contao" ordner, der auf der gleichen ebene liegt, wie er src ordner.


    Was hab ich jetzt wieder übersehehen bzw. was hab ich hier falsch gemacht?
    Geändert von m-werk (27.03.2024 um 13:26 Uhr)
    LG, Andi

  11. #11
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.455

    Standard

    Jetzt hab ich die composer.json auch mal verändert, aber leider hat das auch nicht funktioniert.

    Code:
        "autoload": {
            "psr-4": {
                "Webmail\\ContaoWebmail\\": "src/"
            }
    		"classmap": [
    					"contao/classes/DcaWebmail.php"
    		]
        },
    LG, Andi

  12. #12
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Wie genau ist der Pfad von DcaWebmail.php?
    src/Resources/contao/classes/
    src/contao/classes/
    ?
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  13. #13
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.455

    Standard

    So sieht der Pfad aus. Ich verwende Contao 5.3 und da hat das Creator-Modul mir das so angelegt. Den Ordner "classes" hab ich selbst angelegt und darin die DcaWebmail.php abgelegt. In dieser befindet sich nur der Code für das togglerIcon und togglerVisibility. In meiner alten installation hatte ich diesen Code direkt im dca.
    2024-03-28_07h16_59.jpg

    Nachtrag:

    Ich hab jetzt in der Datei "vendor/composer/autoload_classmap.php" folgendes eingefügt.
    PHP-Code:
    'Webmail\\ContaoWebmail\\classes\\DcaWebmail' => $vendorDir '/webmail/contao-webmail/contao/classes/DcaWebmail.php'
    Weiters hab ich in der Datei "vendor/composer/autoload_static.php" folgendes eingefügt:
    PHP-Code:
    'Webmail\\ContaoWebmail\\classes\\DcaWebmail' => __DIR__ '/..' '/webmail/contao-webmail/contao/classes/DcaWebmail.php'
    Das funktioniert jetzt, aber warum schaft es mein Modul nicht, dies automatisch einzufügen? Was mach ich hier falsch?

    Nachtrag 2:
    Wenn ich ein Contao-Update mache, ist alles wieder wie beim alten.
    Jetzt hab ich was ganz anderes gemacht. Ich habe unter "src/" einen Ordner mit "Classes" erstellt und darin hab ich dann die Datein "DcaWebmail.php" geschoben. Hab nur noch den Namespace von classes auf Classes angepasst und jetzt funktoniert es. Das war mir auch klar.

    Aber warum funktioniert es unter /contao/classes/ nicht? Ich hatte auch die composer.json angepasst auf:
    Code:
    "autoload": {
            "psr-4": {
                "Webmail\\ContaoWebmail\\": ["src/", "contao/"]
            }
        },
    Nicht einmal das halt geholfen und in der services.yaml wusste ich nicht, wie ich den Ordner ../contao/ hinzufügen könnte mit dem Namespace, welcher dort schon steht (siehe weiter oben)
    Geändert von m-werk (28.03.2024 um 12:11 Uhr)
    LG, Andi

  14. #14
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Probier mal:
    Code:
        "autoload": {
            "psr-4": {
                "Webmail\\ContaoWebmail\\": "src/"
            },
    	"classmap": [
    			"contao/classes/"
    	]
        },
    Beachte das Komma das bei dir fehlte und das classmap ein Pfad ist, kein Link zu einer Datei.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  15. #15
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Kannst auch mal hier was ab schauen.
    https://github.com/BugBuster1701/con...le/tree/master
    Wobei ich hier mit zwei Namespaces arbeite. Der neue wird in src/ genutzt, der alte in contao/.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  16. #16
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    455

    Standard

    Hier ist ein Riesen-Commit von mir, um alles von src/Resources zu verschieben:
    https://github.com/oveleon/contao-co...c756782c2a0f6e

    Da kann man sich alles anschauen von:
    - commands / listener / services
    - routes
    - translations (xliff)
    - assets
    - Registrierung von allem

  17. #17
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.455

    Standard

    So, nun hab ich in meiner composer.json dies so stehen:
    Code:
        "autoload": {
            "psr-4": {
                "Webmail\\ContaoWebmail\\": "src/"
            },
    		"classmap": [
    			"contao/"
    		],
    		"exclude-from-classmap": [
    			"contao/config/",
    			"contao/dca/",
    			"contao/languages/",
    			"contao/templates/"
    		]
        },
    In der Datei "DcaWebmail.php" welche unter "contao/classes" sich nun befindet, habe ich als Namespace folgendes stehen:
    PHP-Code:
    namespace Webmail\ContaoWebmail\classes
    In der Datei tl_webmail.php unter contao/dca/ hab ich folgendes stehen:
    PHP-Code:
    'button_callback'     => array('Webmail\ContaoWebmail\classes\DcaWebmail''toggleIcon'
    Es funktioniert weiterhin noch nicht. Ich glaube, es muss an dieser Datei liegen: services.yaml welche unter config im Hauptordner meines Modules liegt, dort steht:
    Code:
    Webmail\ContaoWebmail\:
            resource: ../src/
            exclude: ../src/{DependencyInjection,Model,Module,Session}
    Hier wird der Ordner src angesprochen und ich hab aber auch noch den Ordner ../contao/
    LG, Andi

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

    Standard

    Gibt es einen öffentlich zugänglichen Link zum Repository?
    » sponsor me via GitHub or PayPal or Revolut

  19. #19
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.455

    Standard

    Leider nein! Wird offline/online gemacht.
    LG, Andi

  20. #20
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    455

    Standard

    Falls du nur noch 5.3 supporten willst und 4.13 droppen willst, das toggleIcon braucht man nicht mehr mit deiner Logik, läuft nun alles dank aschempp über das schwarze Loch, der DC_Table.

    Hier passiert dies schon:
    https://github.com/contao/news-bundl...ws.php#L74-L94

    Ansonsten glaube ich wirklich, dass du hier ein Namespace-Problem hast, daher wäre ein Link zum Code einfacher, da wir hier nur mit Codeschnipseln arbeiten.
    Vergleichbar mit der nicht funktionierenden Kaffeemaschine die du zur Reparatur bringst, es stellt sich aber heraus, dass du:
    • keinen Strom hast
    • keine Wohnung oder ein Haus
    • die Kaffeemaschine ein Haartrockner ist


    Hier ist eines der älteren Bundles, welches ich mal halb umgebaut habe (aus Zeitmangel nicht alles umgeschrieben),
    schau dir bitte mal den Namespace an:

    https://github.com/oveleon/contao-gl...s/Glossary.php

  21. #21
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.455

    Standard

    So, nun arbeite ich mich grad in GitHub ein. Leider komm ich hier jetzt mal nicht weiter. Ich werde mich nächste Woche wieder daran setzen und mein Projekt auf Github bringen.

    Ich wünsche euch jetzt mal frohe Ostern und erholsame Feiertage. Ich werde mich dann ab Dienstag wieder melden.

    Danke für eure Unterstützung!
    LG, Andi

  22. #22
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.455

    Standard

    So, nun hab ich es geschafft. Ich hab jetzt mein Projekt unter https://github.com/m-werk/webmail drauf.

    Danke
    LG, Andi

  23. #23
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    455

    Standard

    composer.json ist richtig?

    Du scheinst hier auf github.com/webmail/contao-webmail zu verweisen, das scheint aber nicht dein Account zu sein?
    Auch sollte der Name des Projektes wahrscheinlich m-werk/contao-webmail sein.

    Aber danke fürs Bereitstellen, macht einiges einfacher.

    Kannst du nochmal genau dein Problem schildern, was du nun hast?

  24. #24
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Der Name ist nur wichtig für die Veröffentlichung in packagist. Für GitHub ist das egal.
    Z.B. meine Erweiterungen liegen unter GitHub als BugBuster1701/, die Namen fangen aber an mit bugbuster/, da ich in Packagist damit registriert bin.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  25. #25
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    455

    Standard

    Fixed in https://github.com/m-werk/webmail/pull/1/files (Musst du nur mergen, dann nochmal pullen bei dir)

    Namespace nicht gleich Ordnerstruktur bei dir, daher gibt es halt den psr4 Standard aber die classes im Contao Ordner sind halt so ein "Abfallprodukt" mit der neuen Struktur
    Geändert von zoglo (29.03.2024 um 10:19 Uhr)

  26. #26
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    455

    Standard Namespace

    Und um es nochmal für das Forum zu archivieren:

    Der Pfad zur Klasse ist Webmail\ContaoWebmail\DcaWebmail im nachfolgenden Beispiel
    PHP-Code:
    <php

    namespace Webmail\ContaoWebmail;

    ...

    class 
    DcaWebmail extends Backend
    {
        ...

    hättest du Webmail\ContaoWebmail\classes\DcaWebmail gewollt, hätte es so aussehen müssen, folgt aber nicht dem PSR-4 Standard, welchen du in der composer.json angegeben hast...
    PHP-Code:
    <php

    namespace Webmail\ContaoWebmail\classes// <-- GENAU HIER

    ...

    class 
    DcaWebmail extends Backend
    {
        ...


    Hier mal alles zu PSR... und den Standards:
    https://github.com/php-fig/fig-stand...aster/accepted
    Geändert von zoglo (29.03.2024 um 10:29 Uhr)

  27. #27
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    die logo.png ist noch vom Generator vermute ich mal
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  28. #28
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    455

    Standard

    Und du bist auch für immer verewigt mit einem Copyright @bugbuster

  29. #29
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Huch, ja, die DcaWebmail.php kommt mir bekannt vor, auch von den Texten "publish/unpublish Visitors ID"
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  30. #30
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Zum Thema toggleIcon und Contao 5.3 habe ich mal was auf meinem Spickzettel notiert:

    https://docs.contao.org/dev/referenc...ggle-operation
    geht nur, wenn das Feld (published) vom Typ Boolean ist, war früher mal char(1). (sieht man dort auch)

    wenn nicht muss das Feld was man schalten will ein
    Code:
    `'toggle'                  => true`
    bekommen und die Funktion wie vorher auch genutzt werden.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  31. #31
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.455

    Standard

    Zitat Zitat von zoglo Beitrag anzeigen
    Und um es nochmal für das Forum zu archivieren:

    Der Pfad zur Klasse ist Webmail\ContaoWebmail\DcaWebmail im nachfolgenden Beispiel
    PHP-Code:
    <php

    namespace Webmail\ContaoWebmail;

    ...

    class 
    DcaWebmail extends Backend
    {
        ...

    hättest du Webmail\ContaoWebmail\classes\DcaWebmail gewollt, hätte es so aussehen müssen, folgt aber nicht dem PSR-4 Standard, welchen du in der composer.json angegeben hast...
    PHP-Code:
    <php

    namespace Webmail\ContaoWebmail\classes// <-- GENAU HIER

    ...

    class 
    DcaWebmail extends Backend
    {
        ...

    Ich hab dieses File vergessen anzupassen, welches du in GitHub geändert hast. Das hab ich alles getestet. Egal was ich mache, der Namespace funktoniert nicht.

    Zitat Zitat von BugBuster Beitrag anzeigen
    Huch, ja, die DcaWebmail.php kommt mir bekannt vor, auch von den Texten "publish/unpublish Visitors ID"
    Ja, der Code stammt von dir. Ich hatte diesen schon vor zig Jahren so (Damals noch contao 3.x) implementiert und nur leicht jetzt modifiziert.

    Betreffend dem toggleIcon: Ich werde mir das mal ansehen.
    Mir geht es aber jetzt mal darum: Warum funktioniert das ganze mit dem Namespace nicht? (Die Datei in GitHub hab ich auch schon angepasst). Bei mir will das einfach nicht funktionieren
    LG, Andi

  32. #32
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    455

    Standard

    Wenn du nicht im Devmodus entwickelst (APP_ENV=Dev), musst du den classloader dumpen nach so einer Änderung:
    composer dump-autoload

    Ich habe dein Bundle installiert und es läuft alles nach meiner Änderung.
    Ab jetzt scheint es dann nicht mehr der Code zu sein denke ich.

  33. #33
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.455

    Standard

    Ok, das ist jetzt interessant. Naja, hab nicht im Devmodus entwickelt.

    Ich hab jetzt mal mein Projekt deinstalliert und neu installiert. Jetzt funktioniert es auch bei mir. Komisch, warum es anders nicht gegangen ist, obwohl ich immer alle Caches geleert/erneuert habe und auch den Autoload.

    Herzlichen Dank für eure Unterstützung.
    LG, Andi

Aktive Benutzer

Aktive Benutzer

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

Lesezeichen

Lesezeichen

Berechtigungen

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