Ergebnis 1 bis 12 von 12

Thema: Gelöst - Private Bundles

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

    Standard Gelöst - Private Bundles

    Ho!

    Ich erneuere gerade eine Webseite, das alte CMS wird abgeschossen und Contao soll genutzt werden. Teile der Seite wurden mit Symfony umgesetzt. Daher würde ich gerne Contao 4.3 einsetzen was auch bisher fehlerfrei funktioniert. Mir fehlt nur der richtige Weg in einem Inhaltselement den Output einer der Bundle-Routen auszugeben.

    Also erstelle ich mal eine normale Contao-Erweiterung unter /system/modules/ und muss jetzt wissen, wie ich die Bundle-Ausgaben abgreifen kann. Kann mir das bitte jemand zeigen? Ich weiß ja inzwischen was DependencyInjection und alles sind, nur weiß ich eben nicht wie das in Contao vorgesehen ist.

    Die Bundles liegen im Root unter /src/

    Kann ich hier nun auch ein Plugin schreiben und alle Bundles stehen zur Verfügung? So ähnlich wie die autoload.php nur mit einem BundleLoader? Ich habe jetzt länger mal versucht es alleine zu finden, aber mir fehlen die Beispiele. In dem alten System habe ich mir einfach /web/app.php dupliziert und dann die Routen des Controllers von "Hand" aufgerufen, evt ist das in Contao nicht nötig

    Lg
    Sascha
    Geändert von Sioweb (23.05.2017 um 07:01 Uhr)
    Grüße Sascha W. @Sioweb
    schadebalken.de | zurück-zu-montag.de
    +++ Programmierer von Change-Lok erfasst worden +++

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

    Standard

    Zitat Zitat von Sioweb Beitrag anzeigen
    Mir fehlt nur der richtige Weg in einem Inhaltselement den Output einer der Bundle-Routen auszugeben.
    Ich bin mir nicht sicher ob das aktuell schon möglich ist. In der Zukunft soll es so sein, dass alle Module und Inhaltselemente als eigene Controller umgesetzt werden (können).

    Du könntest jedoch deine Controller als Services registrieren und so dann in deinem Inhaltselement bzw. Modul darauf zugreifen: http://stackoverflow.com/a/15827536/374996
    Oder du holst dir den Response einer Route über die forward Methode - allerdings bin ich mir nicht sicher, wie du da ran kommst.



    Zitat Zitat von Sioweb Beitrag anzeigen
    Die Bundles liegen im Root unter /src/

    Kann ich hier nun auch ein Plugin schreiben und alle Bundles stehen zur Verfügung? So ähnlich wie die autoload.php nur mit einem BundleLoader?
    Naja, besser ist es, du registrierst deine Bundles in der composer.json - dann musst du sie aber immer noch in der AppKernel.php selbst einfügen (so wie immer).

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

    Standard

    Danke. Ich weiß nur leider nicht wie ich die Daten in der AppKernel registrieren kann, die ME hat ja keine AppKernel. Hast du da evt eine Idee wie ich die AppKernel zusätzlich hinzufügen kann? Oder gibts da nen Trick für ein classmapping oder so?
    Grüße Sascha W. @Sioweb
    schadebalken.de | zurück-zu-montag.de
    +++ Programmierer von Change-Lok erfasst worden +++

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

    Standard

    Ja, siehe zB https://community.contao.org/de/show...l=1#post440081 (und siehe die Dokumentation). Du musst dir eine app/ContaoManagerPlugin.php und dort die Bundles und deren Routing registrieren (das AppBundle muss nicht extra registriert werden). Wie das geht kannst du dir bei den Core Bundles ansehen (oder in der Dokumentation). Die app/ContaoManagerPlugin.php musst du dann per "classmap" in der composer.json laden lassen.

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

    Standard

    Top danke. ich würde gerne die Contao-Struktur beibehalten, nur findet Contao dann die Bundles nicht. Kann es sein, dass die composer.json im Bundle selbst ignoriert wird? Denn die Classen & Daten aus src/Ressources/contao/* lädt es mir auch nicht. Ich habe folgenden Aufbau im bundles-Verzeichnis:

    - SIH
    -- SearchBundle
    ---- src
    ------- Resources
    ------- SIHSearchBundle.php
    ---- composer.json

    Und in der Composer.json steht

    Code:
    "autoload": {
        "psr-4": {
            "SIH\\SearchBundle\\": "src"
        },
        "classmap": [
            "src/Resources/contao/"
        ]
    }
    Und in der ContaoManagerPlugin-Klasse

    PHP-Code:
    return [
        
    BundleConfig::create('SIH\SearchBundle\SIHSearchBundle')
            ->
    setLoadAfter(['Contao\CoreBundle\ContaoCoreBundle'])
            ->
    setReplace(['search']),
    ]; 
    Wenn ich die Datei SIHSearchBundle.php direkt unter SIH/SearchBundle speicher, wird zumindest die Klasse gefunden, aber der Rest nicht.
    Geändert von Sioweb (22.05.2017 um 13:02 Uhr)
    Grüße Sascha W. @Sioweb
    schadebalken.de | zurück-zu-montag.de
    +++ Programmierer von Change-Lok erfasst worden +++

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

    Standard

    Zitat Zitat von Sioweb Beitrag anzeigen
    - SIH
    -- SearchBundle
    ---- src
    ------- Resources
    ------- SIHSearchBundle.php
    ---- composer.json
    Der Aufbau kommt mir komisch vor. Wo befinden sich deine eigenen Bundles nun und wie integrierst du sie in die Symfony Applikation?

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

    Standard

    Im Root-Verzeichnis ROOT/bundles/ - habe ich testweise so benannt - sonst wäre es ROOT/src

    In der ROOT/composer.json steht

    Code:
    "autoload": {
        "psr-4": {
            "": "bundles/"
        },
        "classmap": [
            "app/ContaoManagerPlugin.php"
        ]
    }
    Der Aufbau entspricht den Contao-Bundles:

    - contao
    -- comments-bundle
    ---- src
    ------ Resources
    ------ ContaoCommentsBundle.php
    ---- composer.json
    Grüße Sascha W. @Sioweb
    schadebalken.de | zurück-zu-montag.de
    +++ Programmierer von Change-Lok erfasst worden +++

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

    Standard

    Ich glaube du vermischst hier ein paar Dinge. Willst du nun einfach nur lokale Bundles im Projekt machen? Oder werden diese Bundles über composer installiert?

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

    Standard

    Zitat Zitat von Sioweb Beitrag anzeigen
    Der Aufbau entspricht den Contao-Bundles:

    - contao
    -- comments-bundle
    ---- src
    ------ Resources
    ------ ContaoCommentsBundle.php
    ---- composer.json
    Das ist nicht der Aufbau eines Bundles. Der erste Teil ist der Pfad des Repositories. Den bildest du ja nicht unbedingt selbst ab.

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

    Standard

    Ich hab drei bestehende Bundles für das Packet SIH und möchte diese einfach so easy wie möglich zum laufen bringen

    SIH/[SearchBundle|CompassBundle|HelperBundle]

    Das einfachste wird es wohl sein, diese drei Bundles zu laden und Contao-Resourcen dranzuhängen um die Daten aus dem Controller dann auszugeben.
    Grüße Sascha W. @Sioweb
    schadebalken.de | zurück-zu-montag.de
    +++ Programmierer von Change-Lok erfasst worden +++

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

    Standard

    xtra hat hier mal eine nette Anleitung geschrieben: https://community.contao.org/de/show...l=1#post422990

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

    Standard

    Ho! es hat soweit geklappt.

    Ich habe mein Bundle mal als Dummy-Bundle hier hochgeladen https://github.com/Sioweb/Contao4DummyBundle. In dem Bundle wird einfach ein Service deklariert der dann genutzt werden könnte um die Controller etc. zu verwenden. Als Beispiel habe ich ein einfaches Inhaltselement mit Service eingefügt.

    Danke dir
    Grüße Sascha W. @Sioweb
    schadebalken.de | zurück-zu-montag.de
    +++ Programmierer von Change-Lok erfasst worden +++

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
  •