Ergebnis 1 bis 9 von 9

Thema: C4.4 lokales Bundle wie Pfade richtig angeben?

  1. #1
    Contao-Fan
    Registriert seit
    27.11.2009.
    Beiträge
    326

    Standard C4.4 lokales Bundle wie Pfade richtig angeben?

    Hallo,

    ich versuche, ein simples Test-Modul in c4.4 (lokales Bundle in /src) zum Laufen zu bringen und habe mich dabei hieran gehalten:
    https://community.contao.org/de/show...l=1#post455715

    Nun kann ich zwar das Modul im Backend anlegen, aber es wird nicht geparst. Ich gehe davon aus, dass mein Modul (Pfad) nicht gefunden wird.

    Struktur:
    /src/MeinName/Test/Resources

    darin der Ordner /contao mit der bekannten Struktur, also
    /config
    /dca
    /languages
    /modules
    /templates

    und meine Bundle-Datei TestBundle.php

    PHP-Code:
    namespace MeinName\Test;

    use 
    Symfony\Component\HttpKernel\Bundle\Bundle;

    class 
    TestBundle extends Bundle
    {
        

    außerdem gibt es unter /src noch den Ordner ContaoManager mit der ContaoManagerPlugin.php

    PHP-Code:
    use Contao\ManagerPlugin\Bundle\Config\BundleConfig;
    use 
    Contao\ManagerPlugin\Bundle\BundlePluginInterface;
    use 
    Contao\ManagerPlugin\Bundle\Parser\ParserInterface;
    use 
    Contao\CoreBundle\ContaoCoreBundle;
    use 
    MeinName\Test\TestBundle;

    class 
    ContaoManagerPlugin implements BundlePluginInterface
    {
        public function 
    getBundles(ParserInterface $parser)
        {
            return [
                
    BundleConfig::create(TestBundle::class)->setLoadAfter([ContaoCoreBundle::class])
            ];
        }

    die Anpassung der composer.json im root:

    PHP-Code:
    "autoload": {
            
    "classmap": [
                
    "src/ContaoManager/ContaoManagerPlugin.php",
                
    "src/MeinName/Test/Resources/contao"
            
    ],
            
    "psr-4" : { """src/" },
            
    "exclude-from-classmap": [
                
    "src/MeinName/Test/Resources/contao/config/",
                
    "src/MeinName/Test/Resources/contao/dca/",
                
    "src/MeinName/Test/Resources/contao/languages/",
                
    "src/MeinName/Test/Resources/contao/templates/"
            
    ]
        } 
    wie muss ich nun den Pfad zu meiner Modul-Datei in meiner Config.php angeben?

    aktuell steht dort:
    $GLOBALS['FE_MOD']['meinName']['test_module'] = '\MeinName\Test\Resources\Contao\modules\ModuleTes t';

    aber ich hatte auch schon
    $GLOBALS['FE_MOD']['meinName']['test_module'] = '\MeinName\Test\modules\ModuleTest';

    und anderes..

    Und in der ModuleTest.php:

    PHP-Code:
    namespace MeinName\Test;

    class 
    ModuleTest extends \Module
    {

        
    /**
         * Template
         * @var string
         */
        
    protected $strTemplate 'mod_test';


        
    /**
         * Do not display the module if there are no menu items
         * @return string
         */
        
    public function generate()
        {
            if (
    TL_MODE == 'BE')
            {
                
    $objTemplate = new \BackendTemplate('be_wildcard');

                
    $objTemplate->wildcard '### TEST ###';
                
    $objTemplate->title $this->headline;
                
    $objTemplate->id $this->id;
                
    $objTemplate->link $this->name;
                
    $objTemplate->href 'contao/main.php?do=themes&table=tl_module&act=edit&id=' $this->id;

                return 
    $objTemplate->parse();
            }

            return 
    parent::generate();
            
        }


        
    /**
         * Generate the module
         */
        
    protected function compile()
        {
            
    $this->Template->message 'TEST';
        }
        

    Mir ist nicht klar, wie genau der Namespace lauten muss (und so einiges anderes leider auch noch nicht..).

    Irgendwie steht gefühlt überall was anderes und ich habe wirklich schon einige Anläufe unternommen und Tutorials gelesen, aber vieles passt eben scheinbar auch nicht mehr.

    Wäre sehr dankbar über Eure Tipps!
    Geändert von tlnewbie (28.09.2018 um 14:12 Uhr) Grund: Gelöst: Name korrigiert

  2. #2
    Contao-Fan
    Registriert seit
    27.11.2009.
    Beiträge
    326

    Standard

    Habe jetzt ein Debugging über die app_dev.php

    Demnach wird mein Modul im Bereich /vendor gesucht (aber nicht gefunden)..

    The autoloader expected class "MeinName\Test\Resources\contao\modules\ModuleTest " to be defined in file "/var/www/vhosts/xxxxx/xxxxx/vendor/composer/../../src/MeinName/Test/Resources/contao/modules/ModuleTest.php". The file was found but the class was not in it, the class name or namespace probably has a typo.

    'The file was found' wage ich zu bezweifeln..

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

    Standard

    Poste mal die komplette composer.json

  4. #4
    Contao-Fan
    Registriert seit
    27.11.2009.
    Beiträge
    326

    Standard

    Hallo & danke für Dein Interesse!!

    habe da sonst nix geändert:

    PHP-Code:
    {
        
    "name""contao/managed-edition",
        
    "type""project",
        
    "description""Contao Open Source CMS",
        
    "license""LGPL-3.0+",
        
    "authors": [
            {
                
    "name""Leo Feyer",
                
    "homepage""https://github.com/leofeyer"
            
    }
        ],
        
    "require": {
            
    "php""^5.6|^7.0",
            
    "contao/manager-bundle""4.4.*",
            
    "contao/calendar-bundle""^4.4",
            
    "contao/comments-bundle""^4.4",
            
    "contao/faq-bundle""^4.4",
            
    "contao/listing-bundle""^4.4",
            
    "contao/news-bundle""^4.4",
            
    "contao/newsletter-bundle""^4.4"
        
    },
        
    "conflict": {
            
    "contao/core-bundle""<4.4.1"
        
    },
        
    "config": {
            
    "component-dir""assets"
        
    },
        
    "scripts": {
            
    "post-install-cmd": [
                
    "Contao\\ManagerBundle\\Composer\\ScriptHandler::initializeApplication"
            
    ],
            
    "post-update-cmd": [
                
    "Contao\\ManagerBundle\\Composer\\ScriptHandler::initializeApplication"
            
    ]
        },
        
    "autoload": {
            
    "classmap": [
                
    "src/ContaoManager/ContaoManagerPlugin.php",
                
    "src/MeinName/Test/Resources/contao"
            
    ],
            
    "psr-4" : { """src/" },
            
    "exclude-from-classmap": [
                
    "src/MeinName/Test/Resources/contao/config/",
                
    "src/MeinName/Test/Resources/contao/dca/",
                
    "src/MeinName/Test/Resources/contao/languages/",
                
    "src/MeinName/Test/Resources/contao/templates/"
            
    ]
        }

    Edit: Satz war quatsch..
    Geändert von tlnewbie (22.09.2018 um 10:45 Uhr)

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

    Standard

    Der Pfad stimmt schon so, die Fehlermeldung auch. Dir fehlt ein exclude auf den modules Ordner. Vielleicht ist es besser das exclude einfach auf den Resources Ordner zu setzen

  6. #6
    Contao-Fan
    Registriert seit
    27.11.2009.
    Beiträge
    326

    Standard

    PHP-Code:
    "autoload": {
            
    "classmap": [
                
    "src/ContaoManager/ContaoManagerPlugin.php",
                
    "src/MeinName/Test/Resources/contao"
            
    ],
            
    "psr-4" : { """src/" },
            
    "exclude-from-classmap": [
                
    "src/MeinName/Test/Resources/"
            
    ]
        } 
    Hatte ich auch schonmal bzw. den modules-Ordner mit drin.. Leider keine Veränderung.

    nochmal zur config.php

    wenn ich dort einen anführenden Backslash setze, bekomme ich 'nichts' (es wird weder im Back- noch Frontend irgendwas angezeigt), wenn ich ihn weglasse, bekomme ich das Debugging wie oben zitiert.

    Sorry, bin schon bisschen 'durch' heute abend..

    PHP-Code:
    $GLOBALS['FE_MOD']['meinName']['test_module'] = 'MeinName\Test\Resources\contao\modules\ModuleTest'
    vs.

    PHP-Code:
    $GLOBALS['FE_MOD']['meinName']['test_module'] = '\MeinName\Test\Resources\contao\modules\ModuleTest'
    Könnte es sein, dass das

    "psr-4" : { "": "src/" },

    irgendwie nicht funktioniert / greift?
    Geändert von tlnewbie (21.09.2018 um 18:45 Uhr)

  7. #7
    Contao-Fan
    Registriert seit
    27.11.2009.
    Beiträge
    326

    Standard

    UPDATE:

    es funktioniert jetzt, allerdings nur wenn die ContaoManagerPlugin.php im Verzeichnis /app liegt.

  8. #8
    Contao-Fan Avatar von Sioweb
    Registriert seit
    12.08.2011.
    Ort
    Düsseldorf
    Beiträge
    405
    User beschenken
    Wunschliste

    Standard

    Schau mal hier https://github.com/Sioweb/Contao4Dum...poser.json#L26

    Du musst den Pfad zum Plugin mit angeben.
    Geändert von Sioweb (28.09.2018 um 14:32 Uhr)
    Grüße Sascha W. @Sioweb
    schadebalken.de | zurück-zu-montag.de
    +++ Programmierer von Change-Lok erfasst worden +++

  9. #9
    Contao-Fan
    Registriert seit
    27.11.2009.
    Beiträge
    326

    Standard

    Danke Dir - Dein Projekt werde ich mir auf jeden Fall (auch grundsätzlich) ansehen!

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
  •