Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 40 von 47

Thema: [GELÖST] Eigenes Bundle und Contao Manager

  1. #1
    Contao-Nutzer
    Registriert seit
    17.07.2013.
    Beiträge
    77

    Frage [GELÖST] Eigenes Bundle und Contao Manager

    Ich stehe glaube irgendwie auf dem Schlauch oder verstehe was an den gefunden Tuts etwas falsch...

    Ich habe das aktuelle Contao 4.4.8 installiert und ich habe ein altes eigenes Contao 3.5 Modul in ein Bundle umgeschrieben.
    (Hoffentlich richtig) *g* Ich möchte es NICHT wie ein altes Modul integrieren.

    Ich will ein paar Bundles erstellen, die auf einem lokalen Server liegen und nicht auf GitHub oder ähnlichem.
    Nun habe ich verstanden dass wenn man den Contao Manager nutzt ein Bundle einfach unter src gespeichert wird und dann vom Manager automatisch erkannt wird.

    Dies habe ich nun also unter /src/Entwickler/TestBundle bzw /src/TestBundle gespeichert.
    (Habe auch schon andere Bundles von GitHub dort gespeichert und den src Ordner habe ich erst noch angelegt)

    Nun kommen wir zu meinen Problemen:
    1. Wie finde ich nun im Manager dieses Bundle? Sollte dies direkt bei den Modulen auftauchen oder muss ich danach suchen?
    2. Muss ich nun noch was in die allgemeine composer.json eintragen?
    3. Wenn src stimmt muss ich da Entwickler Ordner machen und da sind alle Bundles drin oder nur Bundles Ordner?
    4. Leider fand ich auch keine Bundles von GitHub die ich unter src gespeichert hatte zum testen!


    Gibt es vielleicht ein fertiges Bundle das man Local im src Ordner testen kann und man davon lernen kann falls ich da noch Fehler drin habe?


    Hoffe man versteht wo mein Problem ist
    Grundsätzlich möchte ich im Contao Manager (nicht Console) eigene Bundles aktivieren die auf einem eigenen Server und/oder im src Ordner liegen.


    Sorry für die vielleicht dummen Fragen, aber habe leider nichts mehr gefunden das mich weiter brachte
    Geändert von avus (09.12.2017 um 11:41 Uhr)

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

    Standard

    Wenn ich es richtig verstanden habe, musst Du dazu in der composer.json unter repositories (https://getcomposer.org/doc/05-repositories.md) Dein lokales Verzeichnis (Dein src/, das nicht unbedingt in der Contao Installation liegen muss) angeben. Die so einzubindenden Erweiterungen haben dann ganz regulär ihre einenen composer.json -- genauso, wie wenn sie auf github liegen würden.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  3. #3
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Du meinst du hast ein applikationsspezifisches Bundle? Also du hast deiner Managed Edition einen "src" Folder hinzugefügt, da drin liegt ein "TestBundle" und du möchtest das gerne geladen haben?
    Oder hab ich was falsch verstanden?
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  4. #4
    Contao-Nutzer
    Registriert seit
    17.07.2013.
    Beiträge
    77

    Standard

    Zitat Zitat von Toflar Beitrag anzeigen
    Du meinst du hast ein applikationsspezifisches Bundle? Also du hast deiner Managed Edition einen "src" Folder hinzugefügt, da drin liegt ein "TestBundle" und du möchtest das gerne geladen haben?
    Oder hab ich was falsch verstanden?
    Ja genau, es ist eines von mehreren (im Moment nur das eine zum testen) sehr speziellen Bundles, das auf verschiedenen Homepages zum Einsatz kommen sollen.

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

    Standard

    Dann musst du eine Klasse namens "ContaoManagerPlugin" (root namespace) irgendwo anlegen (zB. im Ordner /app), per composer autoloader laden lassn und dort dein Bundle laden.

  6. #6
    Contao-Nutzer
    Registriert seit
    17.07.2013.
    Beiträge
    77

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Dann musst du eine Klasse namens "ContaoManagerPlugin" (root namespace) irgendwo anlegen (zB. im Ordner /app), per composer autoloader laden lassn und dort dein Bundle laden.
    Ok ich scheine zumindest etwas weiter zu sein doch nun kommt:
    Code:
    [RuntimeException]
      An error occurred while executing the "contao:install-web-dir" command:
      In BundleConfig.php line 144:
    
        The Symfony bundle "TestBundle" does not exist.
    Im ContaoManagerPlugin steht:
    Code:
    BundleConfig::create('TestBundle')->setLoadAfter(['Contao\CoreBundle\ContaoCoreBundle'])
    oder
    BundleConfig::create('Entwickler\TestBundle')->setLoadAfter(['Contao\CoreBundle\ContaoCoreBundle'])
    oder
    BundleConfig::create(TestBundle::class)->setLoadAfter([ContaoCoreBundle::class])
    Meine Dateien/Ordner:
    /src/Entwickler/TestBundle/EntwicklerTestBundle.php
    Code:
    <?php
    declare(strict_types = 1);
    namespace Entwickler\TestBundle;
    use Symfony\Component\HttpKernel\Bundle\Bundle;
    class EntwicklerTestBundle extends Bundle {}
    Code:
    /src/Entwickler/TestBundle/Resources/contao/...
    Dort die alten Modul Dateien

    Code:
    /src/Entwickler/TestBundle/Resources/public
    Leer im Moment


    Und das sollte es doch gewesen sein bei lokalen Bundles oder?
    Was übersehe ich noch?

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

    Standard

    Dein Bundle heißt Entwickler\TestBundle\EntwicklerTestBundle

    Du kannst auch
    PHP-Code:
    use Entwickler\TestBundle\EntwicklerTestBundle;



        BundleConfig
    ::create(EntwicklerTestBundle::class)->setLoadAfter([ContaoCoreBundle::class]); 
    verwenden.

  8. #8
    Contao-Nutzer
    Registriert seit
    17.07.2013.
    Beiträge
    77

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Dein Bundle heißt Entwickler\TestBundle\EntwicklerTestBundle

    Du kannst auch
    PHP-Code:
    use Entwickler\TestBundle\EntwicklerTestBundle;



        BundleConfig
    ::create(EntwicklerTestBundle::class)->setLoadAfter([ContaoCoreBundle::class]); 
    verwenden.



    Nun läuft zwar alles durch ohne Fehler, aber ich sehe das Modul nicht im Manager unter den Paketen.
    Auch wenn ich Suche mache finde ich nichts.
    Und bei Contao Backend ist es auch nicht unter den Modulen zu finden.

    Entschuldige meine doofen Fragen... Danke bisher für alles...

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

    Standard

    Zitat Zitat von avus Beitrag anzeigen
    Nun läuft zwar alles durch ohne Fehler, aber ich sehe das Modul nicht im Manager unter den Paketen.
    Dort siehst du nur Pakete, die du über Composer installiert hast.


    Zitat Zitat von avus Beitrag anzeigen
    Auch wenn ich Suche mache finde ich nichts.
    Dort findest du nur Pakete, die im Packagist vorhanden sind.


    Zitat Zitat von avus Beitrag anzeigen
    Und bei Contao Backend ist es auch nicht unter den Modulen zu finden.
    Dort siehst du nur Module, die du auch dementsprechend konfiguriert hast.

  10. #10
    Contao-Nutzer
    Registriert seit
    17.07.2013.
    Beiträge
    77

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Dort siehst du nur Module, die du auch dementsprechend konfiguriert hast.
    Das ist klar, mein TestModul wäre ein Frontend Modul und bei Contao 3.5 ging ich dazu nach Themes->FrontendModule und nahm es da auf damit ich es dann in den Seiten nutzen konnte.
    Aber da finde ich nun halt nichts...

    Bedeutet das, daß mein TestBundle(Modul) theoretisch dort stehen müsste?
    Oder wie kann ich nun mein TestBundle aufrufen?

    Das muss nun ja irgendwo auftauchen *g*

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

    Standard

    Hast du den Cache gelöscht?

  12. #12
    Contao-Nutzer
    Registriert seit
    17.07.2013.
    Beiträge
    77

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Hast du den Cache gelöscht?
    Ja im Contao Manager Systemwartung gemacht und im Contao BE Systemwartung Daten bereinigen...

    Aber ich lese aus der Frage raus das es nun im Contao BE zu finden sein müsste, dann suche ich da mal nochmals im Code...


    Achja und wenn ich am Bundle was ändere reicht es wenn ich im Manager Pakete aktualisiere oder auch im BE das machen wie früher?
    Geändert von avus (06.12.2017 um 11:48 Uhr)

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

    Standard

    Der Contao Manager bzw Composer (vom auto-loading abgesehen) hat nichts mit deinem lokalen Bundle zu tun. Während der Entwicklung solltest du die Entwicklungsumgebung benutzen (app_dev.php) dann musst du bei den meisten Änderungen nicht immer den Cache löschen.
    Geändert von Spooky (06.12.2017 um 12:46 Uhr)

  14. #14
    Contao-Nutzer
    Registriert seit
    17.07.2013.
    Beiträge
    77

    Standard

    Hmmm...
    Ich dachte man kann das eigentliche Modul einfach so übernehmen aber irgendwie stimmt sicher was nicht mit meinen gesetzten Variablen, da das Modul nicht auftaucht
    Du hast nicht zufällig noch einen Hinweis für mich warum dies nicht passiert?

    Die autoload Dateien werden ja nicht mehr gebraucht, aber wie registriere ich nun mein Bundle als Modul, damit ich es in der Auswahl habe...
    Ich denke da ist der Hund nun noch begraben...

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

    Standard

    Ohne deinen gesamten Code zu sehen ist es eher schwierig einen Hinweis zu geben.

  16. #16
    Contao-Nutzer
    Registriert seit
    17.07.2013.
    Beiträge
    77

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Ohne deinen gesamten Code zu sehen ist es eher schwierig einen Hinweis zu geben.
    Ok

    classes/ModulTestBundle.php
    Code:
    <?php
    namespace Entwickler\TestBundle;
    
    class ModulCopyright extends \Module
    {
    	protected $strTemplate = 'fe_avus_test';
    
    	protected function compile()
    	{
    	}
    }
    config/config.php
    Code:
    <?php
    array_insert($GLOBALS['FE_MOD'], 0, array
    (
    	'avusKategorie' => array
    	(
    		'avusTestFE'   => 'ModulAvusTest'
    	)
    ));
    languages/de/modules.php
    Code:
    <?php
    $GLOBALS['TL_LANG']['FMD'][''] = array('', '');
    $GLOBALS['TL_LANG']['FMD']['avusKategorie'] = 'Überschrift';
    $GLOBALS['TL_LANG']['FMD']['avusTestFE']= array('Unterpunkt', 'Erklärung');
    templates/fe_avus_test.html5
    Code:
    <div class="<?php echo $this->class; ?> block"<?php echo $this->cssID; ?><?php if ($this->style): ?> style="<?php echo $this->style; ?>"<?php endif; ?>>
    
    	<?php
    	$modulPfadName = substr($this->strTemplate,3);
    	$GLOBALS['TL_CSS'][$modulPfadName."1"] = 'system/modules/'.$modulPfadName.'/assets/modul.css';
    	?>
    
    	<p>Dies ist ein Test</p>
    	<br>
    </div>
    Ich glaube Rest uninteressant oder?

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

    Standard

    Gesamter Code deines Bundles . Zippe den src Ordner und lade ihn hier hoch. Plus deine composer.json.

  18. #18
    Contao-Nutzer
    Registriert seit
    17.07.2013.
    Beiträge
    77

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Gesamter Code deines Bundles . Zippe den src Ordner und lade ihn hier hoch. Plus deine composer.json.
    So, habe glaube alles im Zip und richtig hoch geladen

    2. ist richtig
    Geändert von avus (06.12.2017 um 13:38 Uhr)

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

    Standard

    Ein paar Anmerkungen:

    • Da deine Ordnerstruktur sowieso den ganzen Namespace wiedergibt, kannst du statt
      Code:
      "psr-4": {
          "Entwickler\\TestBundle\\": "src/"
      }
      auch einfach nur
      Code:
      "psr-4": {
          "": "src/"
      }
      schreiben. Wobei ich mir nicht sicher bin, ob das irgendwelche Vor- oder Nachteile bringt.
    • Du hast in src/Entwickler/TestBundle/Resources/contao/classes eine Datei namens ModulTestBundle.php mit einer Klasse namens Entwickler\TestBundle\ModulCopyright. Erstens stimmen Datei- und Klassenname nicht überein und zweitens lässt du diese Klasse nicht laden. Dem Namespace nach zu urteilen solltest du diese Klasse auch eher in den folgenden Ordner geben: src/Entwickler/TestBundle/Modules. Außerdem würde ich die Klasse (und den Dateinamen) auf ModuleTestBundle umbenennen.
    • in src/Entwickler/TestBundle/Resources/contao/config/config.php schreibst du folgendes:
      PHP-Code:
      array_insert($GLOBALS['FE_MOD'], 0, array
      (
          
      'avusKategorie' => array
          (
              
      'avusTestFE' => 'ModulAvusTest'
          
      )
      )); 
      In deinem Bundle gibt es aber nirgendwo eine Klasse, die einfach nur ModulAvusTest heißt.

  20. #20
    Contao-Nutzer
    Registriert seit
    17.07.2013.
    Beiträge
    77

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    [*]Du hast in src/Entwickler/TestBundle/Resources/contao/classes eine Datei namens ModulTestBundle.php mit einer Klasse namens Entwickler\TestBundle\ModulCopyright. Erstens stimmen Datei- und Klassenname nicht überein und zweitens lässt du diese Klasse nicht laden. Dem Namespace nach zu urteilen solltest du diese Klasse auch eher in den folgenden Ordner geben: src/Entwickler/TestBundle/Modules. Außerdem würde ich die Klasse (und den Dateinamen) auf ModuleTestBundle umbenennen.[*]in src/Entwickler/TestBundle/Resources/contao/config/config.php schreibst du folgendes:
    PHP-Code:
    array_insert($GLOBALS['FE_MOD'], 0, array
    (
        
    'avusKategorie' => array
        (
            
    'avusTestFE' => 'ModulAvusTest'
        
    )
    )); 
    In deinem Bundle gibt es aber nirgendwo eine Klasse, die einfach nur ModulAvusTest heißt.[/list]
    Ich habe mal deine Änderungen gemacht aber noch sehe ich leider nichts...

    Habe mal neu hochgeladen...


    Die Klasse "ModulAvusTest" war früher in der autoload.php.
    Deren Inhalt habe ich mal auskommentiert in meine config.php geschrieben und versucht oben direkt zu starten was aber auch nicht ging


    Ich muss nun erstmal weg was erledigen...
    Schaue aber später nochmals hier rein

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

    Standard

    Hm, du hast meine Hinweise nicht wirklich befolgt. Momentan ist folgendes falsch:

    • In deinem ContaoManagerPlugin verwendest du Entwickler\TestBundle\AvusTestBundle::class, es sollte aber wohl Entwickler\TestBundle\EntwicklerTestBundle::class sein.
    • Du hast nun eine src/Entwickler/TestBundle/Resources/contao/modules/ModuleTestBundle.php, welche aber nirgendwo geladen wird. Dem Namespace der darin liegenden ModuleTestBundle Klasse zu folge sollte sich diese Datei wohl eher, wie schon gesagt, hier befinden: src/Entwickler/TestBundle/Module/ModuleTestBundle.php und der Namespace sollte Entwickler\TestBundle\Module lauten.
    • In deiner src/Entwickler/TestBundle/Resources/contao/config/config.php referenzierst du eine Klasse namens modules/ModuleTestBundle welche aber nicht existiert.
    Geändert von Spooky (07.12.2017 um 10:57 Uhr)

  22. #22
    Contao-Nutzer
    Registriert seit
    03.07.2009.
    Beiträge
    46

    Standard

    Try changing your ContaoManagerPlugin.php as below


    PHP-Code:

    <?php 

    use Contao\ManagerPlugin\Bundle\Config\BundleConfig
    use 
    Contao\ManagerPlugin\Bundle\BundlePluginInterface
    use 
    Contao\ManagerPlugin\Bundle\Parser\ParserInterface
    use 
    Contao\CoreBundle\ContaoCoreBundle;

    /** 
     * Plugin for the Contao Manager. 
     */ 
    class ContaoManagerPlugin implements BundlePluginInterface 

        
    /** 
         * {@inheritdoc} 
         */ 
        
    public function getBundles(ParserInterface $parser
        { 
            return 
            [ 
                
    BundleConfig::create(Entwickler\TestBundle\EntwicklerTestBundle::class)->setLoadAfter([ContaoCoreBundle::class]) 
            ]; 
        } 
    }
    Screen Shot 2017-12-06 at 16.20.42.png

  23. #23
    Contao-Nutzer
    Registriert seit
    17.07.2013.
    Beiträge
    77

    Standard

    @Spooky: Meine Fernwartung will nicht richtig, muss ich morgen früh nochmals in neuer Frische probieren...

    @tsarma: Thanks, that helped. Now I see my extension in the menu. More tests tomorrow.

  24. #24
    Contao-Fan Avatar von markocupic
    Registriert seit
    06.12.2010.
    Ort
    Oberkirch (Schweiz)
    Beiträge
    660

    Standard

    Zitat Zitat von avus Beitrag anzeigen
    @Spooky: Meine Fernwartung will nicht richtig, muss ich morgen früh nochmals in neuer Frische probieren...

    @tsarma: Thanks, that helped. Now I see my extension in the menu. More tests tomorrow.
    Vielleicht hilft das hier
    https://github.com/markocupic/gmk-co...src/markocupic
    Eine Sammlung von Modulen und Inhaltselementen zum Abschauen...
    LG m
    Anfragen für bezahlten Support oder Extension-Programmierung via PN.

  25. #25
    Contao-Nutzer
    Registriert seit
    17.07.2013.
    Beiträge
    77

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Hm, du hast meine Hinweise nicht wirklich befolgt. Momentan ist folgendes falsch:

    • In deinem ContaoManagerPlugin verwendest du Entwickler\TestBundle\AvusTestBundle::class, es sollte aber wohl Entwickler\TestBundle\EntwicklerTestBundle::class sein.
    • Du hast nun eine src/Entwickler/TestBundle/Resources/contao/modules/ModuleTestBundle.php, welche aber nirgendwo geladen wird. Dem Namespace der darin liegenden ModuleTestBundle Klasse zu folge sollte sich diese Datei wohl eher, wie schon gesagt, hier befinden: src/Entwickler/TestBundle/Module/ModuleTestBundle.php und der Namespace sollte Entwickler\TestBundle\Module lauten.
    • In deiner src/Entwickler/TestBundle/Resources/contao/config/config.php refernzierst du eine Klasse namens modules/ModuleTestBundle.php welche aber nicht existiert.
    So, hoffentlich nun richtig
    Geht aber leider immer noch nicht.

    • Also im Menü habe ich meine Einträge und somit kann ich im BE mein Modul auswählen und auf die Seite einbinden.
    • Die config.php muss auch geladen werden, denn wenn ich dort direkt eine CSS Datei einbinde wird diese ausgeführt.
    • Ich versuche in der config.php meine ModuleTestBundle.php zu laden in der wiederum theoretisch mein "$strTemplate = 'fe_avus_test'" geladen werden sollte.


    Das mein Template nicht geladen wird merke ich das die dort verknüpfte CSS Datei nicht geht, (die in der config.php funktioniert) sowie mein Text nicht kommt.
    Also irgendwie muss ich mein Template geladen bekommen

    @markocupic: leider finde ich bei dir kein Frontend, oder verstehe Code nicht komplett...

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

    Standard

    • Du hast nun eine src/Entwickler/TestBundle/Resources/contao/modules/ModuleTestBundle.php, welche aber nirgendwo geladen wird. Dem Namespace der darin liegenden ModuleTestBundle Klasse zu folge sollte sich diese Datei wohl eher, wie schon gesagt, hier befinden: src/Entwickler/TestBundle/Module/ModuleTestBundle.php und der Namespace sollte Entwickler\TestBundle\Module lauten.
    • In deiner src/Entwickler/TestBundle/Resources/contao/config/config.php referenzierst du eine Klasse namens Entwickler\TestBundle\modules\ModuleTestBundle welche aber nicht existiert. Wenn du den vorigen Punkt behebst, sollte es Entwickler\TestBundle\Module\ModuleTestBundle sein.

  27. #27
    Contao-Nutzer
    Registriert seit
    17.07.2013.
    Beiträge
    77

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    • Du hast nun eine src/Entwickler/TestBundle/Resources/contao/modules/ModuleTestBundle.php, welche aber nirgendwo geladen wird. Dem Namespace der darin liegenden ModuleTestBundle Klasse zu folge sollte sich diese Datei wohl eher, wie schon gesagt, hier befinden: src/Entwickler/TestBundle/Module/ModuleTestBundle.php und der Namespace sollte Entwickler\TestBundle\Module lauten.
    • In deiner src/Entwickler/TestBundle/Resources/contao/config/config.php referenzierst du eine Klasse namens Entwickler\TestBundle\modules\ModuleTestBundle welche aber nicht existiert. Wenn du den vorigen Punkt behebst, sollte es Entwickler\TestBundle\Module\ModuleTestBundle sein.
    Ok ich dachte immer diese Namespaces werden anderst generiert...
    Also meine Datei src/Entwickler/TestBundle/Resources/contao/modules/ModuleTestBundle.php ist da an der passenden Stelle, also habe ich die Namespaces passend gemacht.

    Und hey ich sehe mal was

    Nun fehlt noch was im Verständis:

    Wenn ich im Template $GLOBALS['TL_CSS'][] = 'bundles/entwicklertest/css/test.css'; schreibe wird die CSS Datei aus dem "public" Ordner geladen.
    Nun möchte ich aber die CSS Datei und/oder eine zu ladende JS Datei gerne wie früher unter dem "assets" Ordner haben.
    Geht das nicht mehr? müssen nun alle CSS ,JS und PHP Dateien im "public" Ordner sich befinden?

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

    Standard

    Zitat Zitat von avus Beitrag anzeigen
    Ok ich dachte immer diese Namespaces werden anderst generiert...
    Also meine Datei src/Entwickler/TestBundle/Resources/contao/modules/ModuleTestBundle.php ist da an der passenden Stelle, also habe ich die Namespaces passend gemacht.
    Der FQDN deiner ModuleTestBundle Klasse lautet Entwickler\TestBundle\Module\ModuleTestBundle. Daher sollte sich diese Datei auch im Ordner src/Entwickler/TestBundle/Module/ModuleTestBundle.php befinden. Derzeit ist das nicht der Fall.

  29. #29
    Contao-Nutzer
    Registriert seit
    17.07.2013.
    Beiträge
    77

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Der FQDN deiner ModuleTestBundle Klasse lautet Entwickler\TestBundle\Module\ModuleTestBundle. Daher sollte sich diese Datei auch im Ordner src/Entwickler/TestBundle/Module/ModuleTestBundle.php befinden. Derzeit ist das nicht der Fall.
    Also so habe ich das gemacht und das falsch?
    siehe Anhang


    Ich dachte halt das ich von der Ordnerstruktur so nah wie möglich bei den früheren Modulen bleiben wollte/sollte...
    Angehängte Dateien Angehängte Dateien

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

    Standard

    Zitat Zitat von avus Beitrag anzeigen
    Ich dachte halt das ich von der Ordnerstruktur so nah wie möglich bei den früheren Modulen bleiben wollte/sollte...
    Das kannst du schon so machen, aber dann musst du auch das auto-loading dementsprechend setzen.

    So wie du es jetzt hast is es zwar theoretisch korrekt - aber so macht man das normalerweise nicht. Also einen namespace, der in den Resources Ordner zeigt, solltest du normalerweise nicht haben.

  31. #31
    Contao-Nutzer
    Registriert seit
    17.07.2013.
    Beiträge
    77

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Das kannst du schon so machen, aber dann musst du auch das auto-loading dementsprechend setzen.

    So wie du es jetzt hast is es zwar theoretisch korrekt - aber so macht man das normalerweise nicht. Also einen namespace, der in den Resources Ordner zeigt, solltest du normalerweise nicht haben.
    Nun bin ich doch wieder verwirrt.
    Anhang 20251
    Dachte alle alten Modul Dateien gehören unter das Contao Unterverzeichnis, aber dann muss doch auch der Namespace dort hin zeigen.
    Und zu "public" fand ich sowas: „public“ = symlink nach web (Bilder, JS, CSS etc.)

    Du sagst nun ich soll sogar vor den Resourcen Ordner gehen...
    Wenn das ja so ist müsste ich ja wirklich alle Module komplett umschreiben, verstand aber bisher das dies nicht nötig sei. Oder geht das nur bei meinen Lokalen Varianten nicht?

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

    Standard

    Zitat Zitat von avus Beitrag anzeigen
    Dachte alle alten Modul Dateien gehören unter das Contao Unterverzeichnis, aber dann muss doch auch der Namespace dort hin zeigen.
    Wenn du dein alten Klassen auch im Resources/contao Ordner lässt, dann solltest du auch im auto-loader eine class map dafür machen. bspw.
    Code:
    "autoload": {
        …,
        "classmap": [
            "src/Vendor/Bundle/Resources/contao/classes",
            "src/Vendor/Bundle/Resources/contao/modules",
            …
        ]
    },
    Dann kannst du in deinen alten Klassen auch den alten Namespace verwenden.

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

    Standard

    Ho!

    Ich habe vor einiger Zeit dieses "Tutorial" geschrieben: https://github.com/Sioweb/Contao4DummyBundle evt hilft dir das weiter. Da kannst du einfach hergehen und die Elemente umbenennen/löschen/erweitern. dazu findest du in dem Repo auch einige Module die ich für C4 aktualisiert habe. Prefix "contao4_", die sind allerdings alle auf Packagist.
    Grüße Sascha W. @Sioweb
    schadebalken.de | zurück-zu-montag.de
    +++ Programmierer von Change-Lok erfasst worden +++

  34. #34
    Contao-Nutzer
    Registriert seit
    17.07.2013.
    Beiträge
    77

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Wenn du dein alten Klassen auch im Resources/contao Ordner lässt, dann solltest du auch im auto-loader eine class map dafür machen. bspw.
    Code:
    "autoload": {
        …,
        "classmap": [
            "src/Vendor/Bundle/Resources/contao/classes",
            "src/Vendor/Bundle/Resources/contao/modules",
            …
        ]
    },
    Dann kannst du in deinen alten Klassen auch den alten Namespace verwenden.
    Ich finde leider nicht mal etwas darüber was dieses classmap genau machen soll...

    Ich verstehe nicht was ich nun als Namespace schreiben soll wenn ich dies so ändere
    Habe diverses Probiert aber nichts klappt...

    Sorry...

  35. #35
    Contao-Nutzer
    Registriert seit
    17.07.2013.
    Beiträge
    77

    Standard

    Zitat Zitat von Sioweb Beitrag anzeigen
    Ho!

    Ich habe vor einiger Zeit dieses "Tutorial" geschrieben: https://github.com/Sioweb/Contao4DummyBundle evt hilft dir das weiter. Da kannst du einfach hergehen und die Elemente umbenennen/löschen/erweitern. dazu findest du in dem Repo auch einige Module die ich für C4 aktualisiert habe. Prefix "contao4_", die sind allerdings alle auf Packagist.
    So, da ich beim anderen hänge habe ich hier mal probiert.

    Ich habe nun auch hier das Problem das meine Template Datei nicht geladen wird...
    Sicher wieder ein Namespace Problem aber ich finde es einfach nicht

    Sonst sieht es schon gut aus

    Habe mich an dein Beispiel gehalten, glaube ich zumindest
    Angehängte Dateien Angehängte Dateien

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

    Standard

    Ho! du hast es fast.

    In Plugin.php fehlt das setReplace: (Bullshit ^^)
    PHP-Code:
    BundleConfig::create(AvusCopyBundle::class)->setLoadAfter([ContaoCoreBundle::class])->setReplace(['avuscopybundle']) 
    In der Config ist der Klassenname unvollständig (Avus\ fehlt):

    PHP-Code:
    'avusCopyFE'   => 'Avus\ModulAvusCopy' 
    Danach cache leeren und es sollte gehn. Was genau das setReplace macht, weiß ich net, aber so hab ich es bei mir zum laufen gebracht.
    Geändert von Sioweb (08.12.2017 um 12:18 Uhr)
    Grüße Sascha W. @Sioweb
    schadebalken.de | zurück-zu-montag.de
    +++ Programmierer von Change-Lok erfasst worden +++

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

    Standard

    Mit setReplace gibst du an, welche alte Contao 3 Extension das Bundle ersetzt. zB ersetzt das contao/news-bundle die alte "news" Extension. Dadurch können alte Contao 3 Extensions weiterhin requires[] = "news" in der autoload.ini verwenden.

  38. #38
    Contao-Nutzer
    Registriert seit
    17.07.2013.
    Beiträge
    77

    Standard

    Zitat Zitat von Sioweb Beitrag anzeigen
    Ho! du hast es fast.

    In Plugin.php fehlt das setReplace: (Bullshit ^^)
    PHP-Code:
    BundleConfig::create(AvusCopyBundle::class)->setLoadAfter([ContaoCoreBundle::class])->setReplace(['avuscopybundle']) 
    In der Config ist der Klassenname unvollständig (Avus\ fehlt):

    PHP-Code:
    'avusCopyFE'   => 'Avus\ModulAvusCopy' 
    Danach cache leeren und es sollte gehn. Was genau das setReplace macht, weiß ich net, aber so hab ich es bei mir zum laufen gebracht.
    Das war es tatsächlich... *freu*
    (Cache leeren alleine brachte noch nichts, musste auch Pakete aktualisieren, dann ging es)


    Nun fehlt mir noch ein letztes Problem damit es wie früher läuft:
    Mein Template File hat unter Contao 3.5 so Dateien geladen:
    Code:
    	$modulPfadName = substr($this->strTemplate,3);
    	$GLOBALS['TL_JAVASCRIPT'][$modulPfadName."1"] = 'system/modules/'.$modulPfadName.'/assets/helper.js';
    	$GLOBALS['TL_JAVASCRIPT'][$modulPfadName."2"] = 'system/modules/'.$modulPfadName.'/assets/modul.js';
    	$GLOBALS['TL_CSS'][$modulPfadName."1"] = 'system/modules/'.$modulPfadName.'/assets/modul.css';
    
            <img src="system/modules/<?= $modulPfadName ?>/assets/logo.png" title="avus" width="100px" height="31px">
    Ich habe unter "/src/Ressources/contao/assets/" diverse Dateien gehabt die ich aufgerufen habe.
    modul.css (Stylesheets)
    modul.png (Bilder)
    modul.js (diverser javacode)
    |-> modul.php (über Ajax von modul.js aufgerufen)


    Wie kann ich diese nun aufrufen? Wenn ich mit Pfaden probiere lande ich immer im web root, das sicher nicht der richtige Weg
    Hoffe ich nerve nicht zu sehr und einer von euch kennt die Antwort
    Geändert von avus (08.12.2017 um 13:17 Uhr)

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

    Standard

    Also Modul-Assets werden ja per Symlink aus dem /web/ verzeichnis geladen.

    Deine template-assets könntest du unter /files/assets/[css|js|fonts|...]/datei.endung speichern. Files wird auch per Symlink in den Web "geladen". Du brauchst dann nur /assets/css/module.css schreiben. So zumindest mache ich das.
    Grüße Sascha W. @Sioweb
    schadebalken.de | zurück-zu-montag.de
    +++ Programmierer von Change-Lok erfasst worden +++

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

    Standard

    Bundle Assets befinden sich in Resources/public. Dieser Ordner wird dann auch automatisch gesymlinked.

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
  •