Ergebnis 1 bis 14 von 14

Thema: Contao 4 Erweiterungen per Composer installieren

  1. #1
    Contao-Fan Avatar von MrLumbergh
    Registriert seit
    11.01.2012.
    Ort
    Hamburg
    Beiträge
    368

    Frage Contao 4 Erweiterungen per Composer installieren

    Moin,

    wir haben ein Symfony installiert und Contao darüber. Laut Anleitung: https://docs.contao.org/dev/getting-...on/contao-4.9/

    Jetzt wollten wir nach dieser Anleitung https://www.youtube.com/watch?v=oZMjVofBKls Erweiterungen installieren.

    Wir bekommen auch die Erweiterung grundsätzlich heruntergeladen, aber das Installtool sagt uns nicht, dass es die Datenbank verändern möchte (z.B. bei Catalog Manager oder Notification Bundle).

    Was machen wir falsch?
    Danke für Ideen!

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

    Standard

    Wenn ihr nicht die Managed Edition benutzt, müsst ihr alle Bundles (= Extensions) auch dediziert selbst in eurem Kernel registrieren und laden.

  3. #3
    Contao-Fan Avatar von MrLumbergh
    Registriert seit
    11.01.2012.
    Ort
    Hamburg
    Beiträge
    368

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Wenn ihr nicht die Managed Edition benutzt, müsst ihr alle Bundles (= Extensions) auch dediziert selbst in eurem Kernel registrieren und laden.
    Das klingt erst mal sehr gut - aber beispielsweise bei Catalog Manager - wo finde ich denn da die korrekte Datei, die in den Bundles aufgerufen werden muss? Im dca Ordner? oder library? puuuh. Da gibt's ja jede Menge PHP Dateien, die's sein könnten...

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

    Standard

    Gibt es einen bestimmten Grund warum du nicht die Contao Managed Edition verwendest? Wie man Bundles registriert sollte dir als Entwickler einer reinen Symfony Applikation eigentlich bekannt sein, andernfalls kannst du ja gar keine Third-Party Bundles verwenden.

  5. #5
    Contao-Fan Avatar von MrLumbergh
    Registriert seit
    11.01.2012.
    Ort
    Hamburg
    Beiträge
    368

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Gibt es einen bestimmten Grund warum du nicht die Contao Managed Edition verwendest? Wie man Bundles registriert sollte dir als Entwickler einer reinen Symfony Applikation eigentlich bekannt sein, andernfalls kannst du ja gar keine Third-Party Bundles verwenden.
    Moin,

    grundsätzlich ist das schon klar. Nur es ist das erste mal, dass wir Contao auf Symfony und nicht andersherum installieren, da wir noch mehr im backend benötigen.
    Daher lediglich grundsätzlich die Frage, ob Du mal ein Beispiel für ein Contao Bundle nennen könntest?

    Wir könnten natürlich auch Contao installieren und dann versuchen, alles, was wir in Symfony machen wollen, dort auszuführen...
    Daher die Frage: Können wir das Symfony von Contao dann genau so verwenden wie ein selbst installiertes Symfony oder sind wir da eingeschränkt?
    Oder gibt es andere Probleme?

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

    Standard

    Zitat Zitat von MrLumbergh Beitrag anzeigen
    Daher lediglich grundsätzlich die Frage, ob Du mal ein Beispiel für ein Contao Bundle nennen könntest?
    Leider nicht, da ich das selbst noch nie gemacht habe . Vielleicht könnt ihr 1up für Consulting bzgl. Contao in einer Symfony App beauftragen, die arbeiten auch so damit.



    Zitat Zitat von MrLumbergh Beitrag anzeigen
    Wir könnten natürlich auch Contao installieren und dann versuchen, alles, was wir in Symfony machen wollen, dort auszuführen...
    Daher die Frage: Können wir das Symfony von Contao dann genau so verwenden wie ein selbst installiertes Symfony oder sind wir da eingeschränkt?
    Oder gibt es andere Probleme?
    Ich schätze mal das kommt darauf an, was ihr machen wollt.

  7. #7
    Contao-Fan Avatar von MrLumbergh
    Registriert seit
    11.01.2012.
    Ort
    Hamburg
    Beiträge
    368

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Leider nicht, da ich das selbst noch nie gemacht habe . Vielleicht könnt ihr 1up für Consulting bzgl. Contao in einer Symfony App beauftragen, die arbeiten auch so damit.



    Ich schätze mal das kommt darauf an, was ihr machen wollt.
    Hm. Ok, dann danke Dir erst einmal...
    Immer wieder eine Freude.

  8. #8
    Contao-Nutzer
    Registriert seit
    26.07.2016.
    Beiträge
    47

    Standard

    Moin,

    ich bin der Kollege von MrLumbergh und wir hängen immer noch an diesem Problem fest. Ich hoffe irgendjemand kann uns helfen...

    Nochmal kurz zusammen gefasst:
    - wir haben ein Symfony 4 aufgesetzt und danach das Contao-Bundle etc. per Composer darauf installiert (Anleitung von der offiziellen Contao-Site)
    - die Contao Managed Edition hilft uns leider nicht weiter, weil hier viele Symfony-Komponenten nicht vorhanden sind (z.B. Controller, Entities etc.)
    - Ziel dieser Installation ist die Vorteile aus beiden Komponenten (Contao, Symfony) zu nutzen, da wir Expertise in Contao und Symfony haben, nur noch nicht in deren Kombination
    - soweit läuft Contao wie es soll, nur wir wollen noch Extensions von Contao dazu installieren (z.B. Catalog-Manager)
    - die Installation per Composer ist kein Problem (Einträge in der composer.json sind vorhanden), nur wie bringt man Contao dazu, dass es erkennt dass eine neue Extension dazu gekommen ist?
    - leider haben wir hier zu keine Dokumentation gefunden bzw. zwar eine auf Youtube gefunden, nur leider war diese nicht hilfreich
    - normalerweise würden wir annehmen, dass man die Extension per Composer installiert und der Contao Installer registriert, dass ein Modul dazu gekommen ist (so sah es in dem Video aus)
    - wahrscheinlich fehlt uns noch eine Kleinigkeit, um die Extension zu installieren...vermutlich muss man die Extension in irgeneiner Form bei Contao registrieren?!?
    - wir haben zwar auch schon ein paar Ansätze gefunden, nur leider waren die Beiträge etwas älter und dort wurde noch mit Symfony 3 gearbeitet,
    wir setzen auf Symfony 4, welches eine etwas andere Projektstruktur hat (z.B. keinen app-Folder etc.)

    Es wäre wirklich cool, wenn uns irgendjemand einen Tip geben könnte, denn eigentlich ist die Kombination von Contao und Symfony genial....wenn es denn so funktionieren würde

    Viele Grüße

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

    Standard

    Zitat Zitat von buddy274 Beitrag anzeigen
    - die Contao Managed Edition hilft uns leider nicht weiter, weil hier viele Symfony-Komponenten nicht vorhanden sind (z.B. Controller, Entities etc.)
    Controller und Entities können auch in der Managed Edition benutzt werden.



    Zitat Zitat von buddy274 Beitrag anzeigen
    - die Installation per Composer ist kein Problem (Einträge in der composer.json sind vorhanden), nur wie bringt man Contao dazu, dass es erkennt dass eine neue Extension dazu gekommen ist?
    Contao 4 Extensions sind Bundles. Also ihr müsst die Extension auf die selbe Weise aktivieren wie jedes andere Symfony Bundle. Siehe https://symfony.com/doc/current/bundles.html
    Bundles used in your applications must be enabled per environment in the config/bundles.php file:
    PHP-Code:
    // config/bundles.php
    return [
        
    // 'all' means that the bundle is enabled for any Symfony environment
        
    Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
        
    Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
        
    Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
        
    Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
        
    Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle::class => ['all' => true],
        
    Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],
        
    Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
        
    // this bundle is enabled only in 'dev' and 'test', so you can't use it in 'prod'
        
    Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true'test' => true],
    ]; 


    Zitat Zitat von buddy274 Beitrag anzeigen
    wir setzen auf Symfony 4, welches eine etwas andere Projektstruktur hat (z.B. keinen app-Folder etc.)
    Einen app/ Ordner gibt es in Contao 4.9+ auch nicht mehr

  10. #10
    Contao-Nutzer
    Registriert seit
    26.07.2016.
    Beiträge
    47

    Standard

    Hi Spooky,

    danke für deine Antwort

    Zitat Zitat von Spooky Beitrag anzeigen
    Controller und Entities können auch in der Managed Edition benutzt werden.
    Ich habe es schon vermutet, dann müssten wir wahrscheinlich die entsprechenden Symfony Bundles nach installieren? Ich war nur überrascht in der Managed Edition gar nichts mehr davon zu sehen ist.


    Zitat Zitat von Spooky Beitrag anzeigen
    Contao 4 Extensions sind Bundles. Also ihr müsst die Extension auf die selbe Weise aktivieren wie jedes andere Symfony Bundle. Siehe https://symfony.com/doc/current/bundles.html
    Prinzipiell habe ich wir uns das auch so gedacht. Haben aber als allererstes versucht den Contao Catalog Manager einzubinden, aber der hat keine Bundle-Klasse, die man einbinden kann
    Wir haben es jetzt nochmal mit eine andere Extension probiert und das funktionierte. Hast du irgendeine Idee, wie man den Catalog Manager einbindet? Vermutlich wird man das Problem auch mit anderen Extensions haben.


    Zitat Zitat von Spooky Beitrag anzeigen
    Einen app/ Ordner gibt es in Contao 4.9+ auch nicht mehr
    Hehe, schon klar, wollte nur auf den Unterschied zu Symfony 3 hinaus.

  11. #11
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    6.745
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Der Catalog Manager ist soweit ich weiß noch eine im Contao 3 Stil programmierte Erweiterung also kein Bundle. Alexander Naumov hat mir mal gesagt, dass er mit der jetzigen Version noch Contao 3 unterstützen will/muss. Erst die nächste Hauptversion wird ein Contao 4 Bundle sein.
    Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
    Unterstütze bitte das Contao-Projekt (Button Links)
    Weitere Spendenmöglichkeiten
    ------------------------------------------------------------------------------------------------------
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.




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

    Standard

    Zitat Zitat von buddy274 Beitrag anzeigen
    Ich habe es schon vermutet, dann müssten wir wahrscheinlich die entsprechenden Symfony Bundles nach installieren? Ich war nur überrascht in der Managed Edition gar nichts mehr davon zu sehen ist.
    In wie fern ist davon in der Contao Managed Edition nichts zu sehen? Contao benutzt ja sogar selbst Entities. Siehe: https://github.com/contao/contao/tre...dle/src/Entity

    In der Managed Edition musst du grundsätzlich nichts installieren, um Doctrine Entities zu verwenden (wobei du korrekterweise die entsprechenden Abhängigkeiten trotzdem definieren solltest). In einer regulären Symfony App müsstest du Doctrine erst installieren, siehe https://symfony.com/doc/current/doct...lling-doctrine

    Selbes gilt für Controller. Darauf baut ja ohnehin alles auf . Da gibt es momentan auch einen PR für die Doku in der Pipeline, der nähere Informationen zu Controller, Routing und Request Attributes in Contao zeigt: https://github.com/contao/docs/pull/604



    Zitat Zitat von buddy274 Beitrag anzeigen
    Prinzipiell habe ich wir uns das auch so gedacht. Haben aber als allererstes versucht den Contao Catalog Manager einzubinden, aber der hat keine Bundle-Klasse, die man einbinden kann
    Wir haben es jetzt nochmal mit eine andere Extension probiert und das funktionierte. Hast du irgendeine Idee, wie man den Catalog Manager einbindet? Vermutlich wird man das Problem auch mit anderen Extensions haben.
    Dafür gibt es das ContaoModuleBundle. Wie man auch außerhalb der Managed Edition automatisch alle Contao 3 Extensions laden lassen kann, wird grundsätzlich auch hier in den Code Beispielen gezeigt: https://docs.contao.org/dev/getting-...y-application/
    PHP-Code:
    class AppKernel extends BaseKernel implements HttpCacheProvider
    {
        


        
    public function registerBundles()
        {
            


            
    // Load Contao 3 style modules if available
            /** @var SplFileInfo $module */
            
    foreach ($modules as $module) {
                yield new 
    ContaoModuleBundle($module->getFilename(), $this->getProjectDir() . '/src');
            }
        }

        



    Aber generell hinterfrage ich immer noch, ob ihr wirklich Symfony + Contao braucht - oder nicht einfach nur die Managed Edition. Beides kann natürlich Sinn machen - aber es kommt halt auf den Einsatzzweck an. Und auch auf die eigenen Strukturen und Prozesse.
    Geändert von Spooky (02.11.2020 um 23:09 Uhr)

  13. #13
    Contao-Nutzer
    Registriert seit
    26.07.2016.
    Beiträge
    47

    Lächelndes Gesicht

    @mlweb & Spooky,

    danke für eure Antworten.
    Ich habe es endlich hinbekommen, manchmal sieht man den Wald vor lauter Bäumen nicht.

    @Spooky:

    Die Entities im vendor Ordner habe ich vorher nicht gesehen, als Symfony-Entwickler erwartet man halt eine etwas andere Struktur, danke für den Hinweis.
    Auch der Hinweis mit der Bundle-Registrierung á la Contao 3 hat geholfen. Ich habe in der Contao-Dokumentation https://docs.contao.org/dev/getting-...naged-edition/ da nicht weitergelesen, weil ich nicht erwartet habe dort eine Antwort zu finden.

    Die Lösung will ich aber gerne nochmal für die Nachwelt hier lassen
    Ich habe den Kernel durch den AppKernel wie beschrieben ersetzt, ebenso eine AppCache-Klasse angelegt und und alle Einträge in den .yaml-Dateien gemacht.
    Das einzige Problem ist hier nach allerdings, dass Konsolen-Commands danach nicht mehr funktionieren, da diese den Kernel erwarten und nicht den neuen AppKernel.
    Hier gibt es dann zwei Möglichkeiten:
    1. Die Datei bin/console editieren und dort den AppKernel anstatt des Kernels einbinden (fraglich, ob das eine gute Lösung ist diese Datei zu verändern...jedoch steht sie nicht in der default .gitIgnore).
    2. Die Kernel-Klasse einfach dort liegen lassen, wo sie war.

    Ein kleines weiteres Problem gibt es jedoch noch, wenn man die App-Kernel Klasse anlegt (wie in der Doku beschrieben).
    Und zwar wird durch den Code in der Doku das Projekt-Verzeichnis falsch gesetzt und somit die config/bundle.php nicht gefunden, weil er den config-Folder im src-Folder sucht.
    Grund hierfür ist, dass die AppKernel.php noch im Unterverzeichnis "HttpKernel" liegt. Da der AppKernel von der Symfony\Component\HttpKernel\Kernel Klasse erbt, muss man einfach nur
    die Methode "getProjectDir()" aus der AppKernel.php entfernen, damit die Methode der Mutterklasse verwendet wird, welche das Projekt-Verzeichnis richtig auflöst.

    Nach diesen Änderungen habe ich einfach den Catalog-Manager per Composer installiert, das Contao-Install-Tool aufgerufen und dort hat er dann auch die Datenbankänderungen erkannt.
    Im Contao Backend ist nun er Catalog-Manager verfügbar

    Super, bin echt happy jetzt
    Geändert von buddy274 (03.11.2020 um 15:42 Uhr)

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

    Standard

    Zitat Zitat von buddy274 Beitrag anzeigen
    Die Entities im vendor Ordner habe ich vorher nicht gesehen, als Symfony-Entwickler erwartet man halt eine etwas andere Struktur, danke für den Hinweis.
    Die Struktur entspricht dem Symfony bzw. PSR-4 Standard.

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
  •