Ergebnis 1 bis 5 von 5

Thema: Frontend Modul in Contao 3

  1. #1
    Contao-Nutzer
    Registriert seit
    07.08.2011.
    Beiträge
    110

    Standard Frontend Modul in Contao 3

    Hallo zusammen,

    ich versuche gerade mein erstes FE Modul in Contao zu schreiben und stoße dabei auch folgendes Problem.

    Ich habe in der autoload meine Klasse/Template für den entsprechenden Zugriff definiert
    PHP-Code:
    ClassLoader::addClasses(
            array(
                
    'planner_list'      => 'system/modules/planner/modules/ModuleList.php',
        ));

    TemplateLoader::addFiles(
            array(
               
    'mod_planner'    => 'system/modules/planner/templates'
            
    )
        ); 
    In der config hab ich das FE Modul definiert
    PHP-Code:
    $GLOBALS['FE_MOD']['planner'] = array
        (
            
    'planner' => array
            (
                
    'planner_list' => 'ModuleList'
            
    )
        ); 
    und die ModuleList.php in module/ hat folgenden Inhalt
    PHP-Code:
    <?php 


    class ModuleList extends \Module 
    {
        
    /**
         * Template
         * @var string
         */
        
    protected $strTemplate 'mod_planner';


        
    /**
         * Generate the module
         */
        
    protected function compile()
        {
            
        }
    }
    Als FE Modul kann ich es anlegen und im Inhaltsbereich hinzufügen.
    Jedoch erhalte ich dabei folgende Meldung:

    Warning: class_exists() expects parameter 1 to be string, array given in …/system/modules/core/elements/ContentModule.php on line 51

    #0 [internal function]: __error(2, 'class_exists() ...', '/var/www/....', 51, Array)
    #1 …/system/modules/core/elements/ContentModule.php(51): class_exists(Array)
    #2 …/system/modules/core/library/Contao/Controller.php(456): Contao\ContentModule->generate()
    #3 …/system/modules/core/modules/ModuleArticle.php(179): Contao\Controller->getContentElement(Object(Contao\Model\Collection) )
    #4 …/system/modules/core/modules/Module.php(148): Contao\ModuleArticle->compile()
    #5 …/system/modules/core/modules/ModuleArticle.php(59): Contao\Module->generate()
    #6 …/system/modules/core/library/Contao/Controller.php(384): Contao\ModuleArticle->generate(false)
    #7 …/system/modules/core/library/Contao/Controller.php(237): Contao\Controller->getArticle(Object(Contao\Model\Collection), false, false, 'main')
    #8 …/system/modules/core/pages/PageRegular.php(109): Contao\Controller->getFrontendModule('0', 'main')
    #9 …/index.php(250): Contao\PageRegular->generate(Object(Contao\PageModel))
    #10 …/index.php(411): Index->run()
    #11 {main}

    Kann jemand sagen wo der Fehler ist??

  2. #2
    Contao-Nutzer Avatar von d.tomasi
    Registriert seit
    19.08.2011.
    Ort
    Waldshut-Tiengen
    Beiträge
    27

    Standard

    Dein Array für das FrontenModul ist zu tief. Versuch es mal so.

    PHP-Code:
    $GLOBALS['FE_MOD']['planner'] = array
    (
            
    'planner_list' => 'ModuleList'
    ); 
    somit wird nun der String "ModuleList" an class_exists übergeben und nicht mehr ein Array.

    Denke das sollte dein Problem beheben.

    Viele Grüße

  3. #3
    Contao-Nutzer
    Registriert seit
    07.08.2011.
    Beiträge
    110

    Standard

    Danke d.tomasi, das hat funktioniert.

    Nur leider erhalte ich keinerlei Ausgaben im Frontend. Ich habe das Gefühl, das die Methode compile() gar nicht aufgerufen wird.

  4. #4
    Contao-Nutzer Avatar von d.tomasi
    Registriert seit
    19.08.2011.
    Ort
    Waldshut-Tiengen
    Beiträge
    27

    Standard

    gerne, freut mich es jetzt klappt...

    Um eine Ausgabe zu erhalten musst du ja aber erstmal was ausgeben. Dazu musst du erst ein neues FrontendTemplate anlegen, es mit deiner Ausgabe fülllen und dann parsen.

    PHP-Code:

    protected function compile()
    {
            
    $objTemplate = New FrontendTemplate('string des Templates');

            
    $objTemplate->etwas_zum_ausgeben 'Hallo';

            
    $this->Template $objTemplate->parse();

    Gruß

  5. #5
    Contao-Nutzer
    Registriert seit
    07.08.2011.
    Beiträge
    110

    Standard

    ahh, ich dachte ich kann direkt auf das Template Objekt zugreifen.
    Okay, dann werde ich das entsprechend deinen Angaben so fortführen.

    Vielen Dank für die Hilfe.

Aktive Benutzer

Aktive Benutzer

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

Lesezeichen

Lesezeichen

Berechtigungen

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