Ergebnis 1 bis 10 von 10

Thema: Eigenes Modul - Frontend Template (twig) wird nicht gefunden

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

    Standard Eigenes Modul - Frontend Template (twig) wird nicht gefunden

    Hallo, ich hab vor Jahren ein kleines Modul geschrieben für Conntao 4 und nun hab ich einige änderungen vorgenommen unter anderem hab ich auch meine html5 Templates in html.twig Templates umgewandelt.

    Das Modul funktioniert einwandfrei im Backend, nur im Frontend bekomme ich im Debug-Moduls folgende Meldung:
    Could neither find template "frontend_module/webmail_list" nor the legacy fallback template "mod_webmail_list". Did you forget to create a default template or manually define the "template" property of the controller's service tag/attribute?
    Meine Templates liegen dort, wo sie immer gelegen sind. vendor/m-werkt/webmail/contao/templates. Ich weiß jetzt nur nicht, wie mein Modul hier auf "frontend_module" kommt.

    Wo könnte sich der Fehler befinden, bzw. was könnte ich vergessen haben?

    LG, Andi
    Geändert von m-werk (17.07.2025 um 09:06 Uhr)
    LG, Andi

  2. #2
    Contao-Fan Avatar von lbableck
    Registriert seit
    10.06.2021.
    Beiträge
    340
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Du musst das Template in contao/templates/frontend_module ablegen, nicht in contao/templates.

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

    Standard

    Poste den Code deines Moduls und den genauen Pfad deines Templates (inkl. Name & Extension) relativ zum Contao Installationsverzeichnis.
    » sponsor me via GitHub or Revolut

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

    Standard

    Also mein Pfad zum Template:
    ..vendor/m-werk/webmail/contao/templates/frontend_module/webmail.list.html.php (und 2 weitere Templates sind auch in diesem Ordner

    Und das ist das modul: (Ich glaub, beim render verbirgt sich der Fehler)
    PHP-Code:
    protected function getResponse(): Response
        
    {
            
    $messagesData $this->loadMessages();

            
    $total = \count($messagesData);
            
    $perPage = (int) ($this->numberOfItems ?: 10);
            
    $page = (int) Input::get('page') ?: 1;
            
    $offset = ($page 1) * $perPage;

            
    $pagination = new Pagination($total$perPage7'page');

            
    // Nur die Items für die aktuelle Seite anzeigen
            
    $messages = \array_slice($messagesData$offset$perPage);

            return 
    $this->render('@Contao/webmail_list.html.twig', [
                
    'messages'   => $messages,
                
    'pagination' => $pagination->generate(),
            ]);
        } 
    LG, Andi

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

    Standard

    Zitat Zitat von m-werk Beitrag anzeigen
    Also mein Pfad zum Template:
    ..vendor/m-werk/webmail/contao/templates/frontend_module/webmail.list.html.php (und 2 weitere Templates sind auch in diesem Ordner
    Das heißt, es handelt sich hier um ein Bundle bzw. eine Extension?


    Zitat Zitat von m-werk Beitrag anzeigen
    Und das ist das modul: (Ich glaub, beim render verbirgt sich der Fehler)
    PHP-Code:
    protected function getResponse(): Response
        
    {
            
    $messagesData $this->loadMessages();

            
    $total = \count($messagesData);
            
    $perPage = (int) ($this->numberOfItems ?: 10);
            
    $page = (int) Input::get('page') ?: 1;
            
    $offset = ($page 1) * $perPage;

            
    $pagination = new Pagination($total$perPage7'page');

            
    // Nur die Items für die aktuelle Seite anzeigen
            
    $messages = \array_slice($messagesData$offset$perPage);

            return 
    $this->render('@Contao/webmail_list.html.twig', [
                
    'messages'   => $messages,
                
    'pagination' => $pagination->generate(),
            ]);
        } 
    In deinem Code hast du webmail_list.html.twig geschrieben - aber laut deiner Info heißt dein Template frontend_module/webmail.list.html.php
    » sponsor me via GitHub or Revolut

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

    Standard

    Eigentlich ist es ein Modul. Ich hab das vor vielen Jahren mal erstellt und jetzt wollte ich es einfach nur etwas aktualisieren für Contao 5. Es wurde immer nur etwas erweitert, nie wirklich bereinigt.

    Es ist ein ganz einfachses Modul (diente auch am Anfang zu testzwecken).

    Woher "frontend_module" jetzt kommt, weiß ich auch nicht.

    Kann es sein, dass dies von meiner serivces.yaml so kommt? Die sieht so aus:
    Code:
    services:
        _defaults:
            autowire: true
            autoconfigure: true
            public: false
            
        MWerk\Webmail\Controller\FrontendModule\WebmailListController:
            tags:
                - { name: contao.frontend_module, type: webmail_list, category: webmail }
    
        MWerk\Webmail\Controller\FrontendModule\:
            resource: '../src/Controller/FrontendModule'
            tags: ['controller.service_arguments']
    LG, Andi

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

    Standard

    Das Problem ist, dass dein Modul sich nicht an das hält, was erwartet wird. Du hast eine getResponse() - aber ohne Parameter. An die getResponse() wird die Template Instanz übergeben - und Contao übergibt dir automatisch das von dir definierte Template. Wenn du kein Template definiert hast, wird automatisch nach einem Template nach einem gewissen Schema gesucht.
    » sponsor me via GitHub or Revolut

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

    Standard

    Ich hab es mal umgebaut, aber ich glaub, ich total am falschen Ort
    PHP-Code:
    protected function getResponse(Template $templateModuleModel $modelRequest $request): Response
        
    {
            
    $messagesData $this->loadMessages();

            
    $total = \count($messagesData);
            
    $perPage = (int) ($model->numberOfItems ?: 10);
            
    $page = (int) \Contao\Input::get('page') ?: 1;
            
    $offset = ($page 1) * $perPage;

            
    $pagination = new \Contao\Pagination($total$perPage7'page');

            
    $messages = \array_slice($messagesData$offset$perPage);

            return 
    $this->render('@Contao/frontend_module/webmail_list.html.twig', [
                
    'messages'   => $messages,
                
    'pagination' => $pagination->generate(),
                
    'template'   => $template,
                
    'module'     => $model,
            ]);
        } 
    LG, Andi

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

    Standard

    Ich würde dir empfehlen dich an das zu halten, was in der Dokumentation steht: https://docs.contao.org/dev/framewor...t-end-modules/

    Du hast nun ein Mischmasch an Dingen. Du lässt zwar einerseits von Contao dir eine Template Instanz übergeben - verwendest diese aber nicht, sondern rufst $this->render auf.
    » sponsor me via GitHub or Revolut

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

    Standard

    Ich werd wieder zurück auf die vorherige Version gehen bei meinem Modul.

    Jetzt habe ich es geschaft, dass wenigstens keine Fehlermeldung mehr kommt, hab meinen Controller umgebaut aber nun geht das Backend wieder nicht. Ich verzweifle jetzt schon langsam.
    LG, Andi

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
  •