Ergebnis 1 bis 14 von 14

Thema: Eigenes Front End Module will sich nicht zeigen

  1. #1
    Contao-Nutzer
    Registriert seit
    15.11.2023.
    Beiträge
    7

    Frage Eigenes Front End Module will sich nicht zeigen

    Hallo Gemeinde,

    nach neuerlichem Umstieg auf das wirklich gute Contao, will ich nun auch in die Entwicklung eigener Module einsteigen. Installiert habe ich V 5.3. Ich habe mich dazu der offiziellen Anleitung (https://docs.contao.org/dev/framewor...t-end-modules/) bedient. Dennoch wird es im Dropdown "Modultyp" der Fronten Module im Backend nicht angezeigt. Die dazu erstellten Dateien sehen so aus:

    src/Controller/FrontendModule/ExampleModuleController.php
    PHP-Code:
    <?php
    namespace App\Controller\FrontendModule;

    use 
    Contao\CoreBundle\Controller\FrontendModule\AbstractFrontendModuleController;
    use 
    Contao\CoreBundle\DependencyInjection\Attribute\AsFrontendModule;
    use 
    Contao\ModuleModel;
    use 
    Contao\Template;
    use 
    Symfony\Component\HttpFoundation\Request;
    use 
    Symfony\Component\HttpFoundation\Response;

    #[AsFrontendModule(category: 'miscellaneous')]
    class ExampleModuleController extends AbstractFrontendModuleController
    {
        protected function 
    getResponse(Template $templateModuleModel $modelRequest $request): Response
        
    {
            
    $template->action "TEST !!";

            return 
    $template->getResponse();
        }
    }
    contao/dca/tl_module.php
    PHP-Code:
    <?php
    $GLOBALS
    ['TL_DCA']['tl_module']['palettes']['my_frontend_module'] = 
        
    '{title_legend},name,type;{redirect_legend},jumpTo'
    ;
    templates/mod_my_frontend_module.html5
    HTML-Code:
    <div class="my-frontend-module">
    	<p>
    		<?= $this->action ?>
    	</p>
    </div>
    contao/languages/en/modules.php
    PHP-Code:
    <?php
    $GLOBALS
    ['TL_LANG']['FMD']['my_frontend_module'] = [
        
    'My front end module',
        
    'A front end module for testing purposes.',
    ];
    In der Console habe ich diese Infos abrufen können, also registriert scheint es zu sein:
    Code:
    vendor/bin/contao-console debug:container App\Controller\FrontendModule\ExampleModuleController
    Code:
    Information for Service "App\Controller\FrontendModule\ExampleModuleController"
    ===============================================================================
    
     ---------------- -------------------------------------------------------
      Option           Value
     ---------------- -------------------------------------------------------
      Service ID       App\Controller\FrontendModule\ExampleModuleController
      Class            App\Controller\FrontendModule\ExampleModuleController
      Tags             controller.service_arguments
                       container.service_subscriber
      Calls            setContainer
      Public           yes
      Synthetic        no
      Lazy             no
      Shared           yes
      Abstract         no
      Autowired        yes
      Autoconfigured   yes
      Usages           none
     ---------------- -------------------------------------------------------
    Vielen Dank für Eure Hilfe

    Sven

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

    Standard

    Du hast keinen type festgelegt, somit leitet sich der type aus dem Klassennamen ab. In deinem Fall wäre der Type dann "example_module". Du hast aber überall "my_frontend_module" verwendet.
    » sponsor me via GitHub or Revolut

  3. #3
    Contao-Nutzer
    Registriert seit
    15.11.2023.
    Beiträge
    7

    Standard

    Ach jaaa, danke

    Ich habe den Klassennamen angepasst - und nun funktioniert es.

    Wo und wie wird alternativ der Type angegeben? In der tl_module.php?

    [Edit] Glaube, es gefunden zu haben:
    PHP-Code:
    #[AsFrontendModule(ExampleModuleController::TYPE, 'miscellaneous')]
    class ExampleModuleController extends AbstractFrontendModuleController
    {
        public const 
    TYPE 'my_module';

    Dann ist aber auch die - sonst gute - Anleitung (https://docs.contao.org/dev/framewor...t-end-modules/) etwas verwwirend.
    Geändert von scara (10.01.2025 um 12:59 Uhr)

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

    Standard

    Zitat Zitat von scara Beitrag anzeigen
    Dann ist aber auch die - sonst gute - Anleitung (https://docs.contao.org/dev/framewor...t-end-modules/) etwas verwwirend.
    In wie fern?
    » sponsor me via GitHub or Revolut

  5. #5
    Contao-Nutzer
    Registriert seit
    15.11.2023.
    Beiträge
    7

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    In wie fern?
    Nun ja, ich denke, wenn der Klassenname dem Type (Modulename?) entsprechen würde. Also in diesem konkreten Fall 'my_frontend_module' => 'MyFrontendModuleController'. So funktioniert es ja bei mir auf Anhieb. Oder habe ich einen Denkfehler? Wo sonst wird denn der Type angegeben?

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

    Standard

    Den Type kannst du im PHP Attribute angeben. Wenn du keinen Type angibst, wird der Type vom Klassennamen abgeleitet. Das ist auch in der Dokumentation so erklärt.
    » sponsor me via GitHub or Revolut

  7. #7
    Contao-Nutzer
    Registriert seit
    15.11.2023.
    Beiträge
    7

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Den Type kannst du im PHP Attribute angeben. Wenn du keinen Type angibst, wird der Type vom Klassennamen abgeleitet. Das ist auch in der Dokumentation so erklärt.
    Okay, danke. War ja keine Kritik. Dann war es nur für mich verwirrend ;-)

  8. #8
    Alter Contao-Hase
    Registriert seit
    24.02.2021.
    Beiträge
    1.477
    Partner-ID
    11715
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Es steht weiter unten in der Dokumentation, wenn du Vorschläge hast, wie man dies verbessern kann, könntest du auch einen PR machen.
    (Wir brauchen immer gute Leute, welche die Doku verbessern - Sie wird ja hauptsächlich nur von Entwicklern geschrieben)

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

    Standard

    Die Erklärung bzgl. Type steht ganz oben: https://docs.contao.org/dev/framewor...es/#definition
    » sponsor me via GitHub or Revolut

  10. #10
    Alter Contao-Hase
    Registriert seit
    24.02.2021.
    Beiträge
    1.477
    Partner-ID
    11715
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Die Erklärung bzgl. Type steht ganz oben: https://docs.contao.org/dev/framewor...es/#definition
    Jup und hier auch noch weiter unten <3
    https://docs.contao.org/dev/framewor.../#registration
    PHP-Code:
    #[AsFrontendModule(ExampleModuleController::TYPE, 'miscellaneous')]
    class ExampleModuleController extends AbstractFrontendModuleController
    {
        public const 
    TYPE 'my_module';


  11. #11
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    3.038

    Standard

    Ich hoffe, ich habe den Thread oder die Doku nicht zu schlampig gelesen: M.E. Ist die Doku aber verwirrend. Bei den folgenden Zeilen beziehe ich mich auf die Quellen der Doku (https://github.com/contao/docs/blob/...les.md?plain=1)

    1) In Zeile 39 wird Type erklärt. (u.A. „If omitted the type will be automatically generated …“)

    2) In Zeile 63 gibt es das Beispiel für die Definition der Palette mit 'my_frontend_module'

    3) In Zeile 86 dann die Verwendung von Attributes (AsForntendModule) in der Klasse ExampleModuleConteoller ohne Type. Die „Verbindung“ zu my_frontend_module fehlt also (da — siehe 1) — der Type aus dem Klassennamen generiert wird) und das Beispiel sollte so nicht funktionieren. Ein Code-Beispiel mit Type kommt erst weiter unten (ab Zeile 298).

    Wenn ich also „Top-Down“ die Doku der Reihe nach ausprobiere (Ansatz: „die noch kommenden Feinheiten schaue ich mir später an, ich probiere erst mal das simple Beispiel“) werde ich mit dem Beispiel scheitern. Wenn ich es richtig im Tread gelesen habe, war das genau das Problem des OP.


    Ich hoffe, ich habe nichts übersehen!
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  12. #12
    Alter Contao-Hase
    Registriert seit
    24.02.2021.
    Beiträge
    1.477
    Partner-ID
    11715
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Idk, ich verwende nur AsFrontendModule und schreibe dann den Rest selber und lasse Contao nun die Magic machen inkl. Twig-Template.
    Ich kann die Verwirrung verstehen aber man kann auch zur Doku beitragen, wenn man es besser schreiben kann

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

    Standard

    Zitat Zitat von fiedsch Beitrag anzeigen
    Ich hoffe, ich habe den Thread oder die Doku nicht zu schlampig gelesen: M.E. Ist die Doku aber verwirrend. Bei den folgenden Zeilen beziehe ich mich auf die Quellen der Doku (https://github.com/contao/docs/blob/...les.md?plain=1)

    1) In Zeile 39 wird Type erklärt. (u.A. „If omitted the type will be automatically generated …“)

    2) In Zeile 63 gibt es das Beispiel für die Definition der Palette mit 'my_frontend_module'

    3) In Zeile 86 dann die Verwendung von Attributes (AsForntendModule) in der Klasse ExampleModuleConteoller ohne Type. Die „Verbindung“ zu my_frontend_module fehlt also (da — siehe 1) — der Type aus dem Klassennamen generiert wird) und das Beispiel sollte so nicht funktionieren. Ein Code-Beispiel mit Type kommt erst weiter unten (ab Zeile 298).

    Wenn ich also „Top-Down“ die Doku der Reihe nach ausprobiere (Ansatz: „die noch kommenden Feinheiten schaue ich mir später an, ich probiere erst mal das simple Beispiel“) werde ich mit dem Beispiel scheitern. Wenn ich es richtig im Tread gelesen habe, war das genau das Problem des OP.


    Ich hoffe, ich habe nichts übersehen!
    -> https://github.com/contao/docs/pull/1495
    » sponsor me via GitHub or Revolut

  14. #14
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    3.038

    Standard

    Danke für den PR!
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

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