Contao-Camp 2024
Ergebnis 1 bis 9 von 9

Thema: Bundle Erweitern

  1. #1
    Contao-Nutzer
    Registriert seit
    22.10.2021.
    Beiträge
    45

    Standard Bundle Erweitern

    Ich würde gerne ein Bundle erweitern.
    https://github.com/Kuestenschmiede/ForumBundle

    Dazu wollte ich ein neues Bundle erstellen ( ForumBundleFix) und die Dateien die ich ändern möchte in meinem Bundle einfügen.

    Sagen wir ich möchte die z.B die Datei
    https://github.com/Kuestenschmiede/F..._c4g_forum.php

    über meinem Bundle ForumBundleFix ändern.

    Wie kann ich Bundleübergreifend Dateien ändern / überschreiben ?

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

    Standard

    Kommt immer darauf an, was genau du machen möchtest. Dein Beispiel ist eine einfache DCA Änderung. Dazu musst du nur definieren, dass dein Bundle nach dem anderen Bundle geladen wird (über das Contao Manager Plugin) und dann ganz normal die DCA Anpassung in src/Resources/contao/dca/tl_c4g_forum.php geben (bzw. contao/dca/tl_c4g_forum.php).
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Nutzer
    Registriert seit
    22.10.2021.
    Beiträge
    45

    Standard

    Okay . Alle sonstigen Dateien kann ich dann auch so Überschreiben ?

    Z.B im Ordner Controller liegt https://github.com/Kuestenschmiede/F...Controller.php

    Dann brauch ich in meinem Erweiterungs-Bundle nur die selbe Struktur implementieren und den selben Dateinamen ?

    Oder muss ich noch irgendwas zwecks Namespaces usw beachten ?

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

    Standard

    Nein, das geht nicht einfach so. Wie gesagt kommt es immer darauf an, was genau du machen möchtest.
    » sponsor me via GitHub or PayPal or Revolut

  5. #5
    Contao-Nutzer
    Registriert seit
    22.10.2021.
    Beiträge
    45

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Nein, das geht nicht einfach so. Wie gesagt kommt es immer darauf an, was genau du machen möchtest.
    Ich möchte jede Datei ändern / überschreiben können.

    Was wäre z.B dann der Ansatz um eine Datei zu ersetzen?
    Bundle B überschreibt Datei von Bundle A.

    Sagen wir ich möchte die Datei
    https://github.com/Kuestenschmiede/F...Controller.php

    Durch mein erstelltes Bundle

    welche dann auch eine Datei Names ForumController.php
    hat ersetzen.

    Wie würde dies dann funktionieren ?
    Geändert von Medy (04.06.2022 um 20:53 Uhr)

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

    Standard

    Das geht so wie du dir das vorstellst nicht direkt. Du kannst aber Services decoraten und überschreiben, sowie Routes überschreiben. Warum genau willst du den Controller ersetzen?
    » sponsor me via GitHub or PayPal or Revolut

  7. #7
    Contao-Nutzer
    Registriert seit
    22.10.2021.
    Beiträge
    45

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Das geht so wie du dir das vorstellst nicht direkt. Du kannst aber Services decoraten und überschreiben, sowie Routes überschreiben. Warum genau willst du den Controller ersetzen?

    Ich versuche zu verstehen wie die Herangehensweise ist um ein bestehendes Bundle zu "ändern" und zu erweitern.

    Habe in der Symfony Doc eine Seite dazu gefunden : https://symfony.com/doc/5.0/bundles/...ml#controllers

    Damit kann ich schon mal die Haupt Teile eines Bundles "overriden".

    - Controller
    - Templates




    über serrvice decoration kann ich also bestimmen das meine Klasse geladen wird anstelle die vom Orginal Bundle.

    PHP-Code:
    # config/services.yaml
    services:
        
    App\Mailer: ~

        
    # this replaces the old App\Mailer definition with the new one, the
        # old definition is lost
        
    App\Mailer:
            class: 
    App\NewMailer 
    Nun ist noch die Frage auf welche Teile ich schauen muss wenn
    ich ein Bundle "erweitern" will.

    Beispiel :

    Ich installiere das neue Bundle und dann :


    1. das neue Bundle fügt einen neuen Controller zum Orginal Bundle hinzu
    2. das neue Bundle fügt Templates zum Orginal Bundle hinzu
    3. das neue Bundle erweitert DCA

    Das Orginal Bundle hat nun im Backend ein neues Input Feld , Und im Frontend gibt es einen Button der die Logik des neuen Controllers hat.

    Ich denke das ist unterm Strich alles was ich brauche. Controller überschreiben .... Templates hinzufügen .... den Dca erweitern um in der Datenbank weitere felder hinzuzufügen / bestehende felder entfernen bzw auszublenden) ...

    Ich wollte das Projekt erst forken .. Aber ein Kollege meinte ich sollte das Bundle erweitern um von der weiteren Entwicklung des orginal Bundles zu profitieren später.

    Was das ganze etwas komplizierter macht ... Da ich halt nicht einfach die Dateien ändern kann des Orginal Bundles , sondern ein weiteres Bundle erstelle was sachen überschreibt / hinzufügt.
    Geändert von Medy (05.06.2022 um 18:52 Uhr)

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

    Standard

    Zitat Zitat von Medy Beitrag anzeigen
    1. das neue Bundle fügt einen neuen Controller zum Orginal Bundle hinzu
    Das wäre einfach ein eigener Controller mit einer eigenem Route in deinem Bundle und hat nichts mit dem ursprünglichen Bundle zu tun. Natürlich kannst du den Path der Route so wählen, als würde es zum Original gehören.



    Zitat Zitat von Medy Beitrag anzeigen
    2. das neue Bundle fügt Templates zum Orginal Bundle hinzu
    Wenn du Contao PHP Templates meinst - da ist nur die Namensgebung wichtig.



    Zitat Zitat von Medy Beitrag anzeigen
    3. das neue Bundle erweitert DCA
    Ja, das geht auf jeden Fall siehe oben.



    Zitat Zitat von Medy Beitrag anzeigen
    Da ich halt nicht einfach die Dateien ändern kann des Orginal Bundles .
    Das willst du ja auch nie, denn ansonsten müsstest du ja Änderungen im Original Code immer wieder manuell nachziehen
    » sponsor me via GitHub or PayPal or Revolut

  9. #9
    Contao-Nutzer
    Registriert seit
    22.10.2021.
    Beiträge
    45

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Das willst du ja auch nie, denn ansonsten müsstest du ja Änderungen im Original Code immer wieder manuell nachziehen
    Alright. Danke dir

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
  •