Ergebnis 1 bis 11 von 11

Thema: Core Klasse ContentElement überschreiben geht nicht mehr

  1. #1
    Contao-Nutzer
    Registriert seit
    18.02.2010.
    Beiträge
    10

    Standard Core Klasse ContentElement überschreiben geht nicht mehr

    Hallo zusammen,

    ich habe eine Extension aus Contao 3.5 Zeiten, welche ich auch problemlos mit Contao 4.5 nutze. In Contao 4.6 funktioniert diese aber nicht mehr.
    Problem ist, dass in der Extension die Core Klasse ContentElement überschrieben wird und dies wohl in der 4.6 nicht mehr geht. Offensichtlich hat sich hier etwas am ClassLoader geändert, so dass es er nun bemängelt, dass die Klasse bereits deklariert wurde.

    Fehler ist:
    Code:
    Warning: Cannot declare class ContentElement, because the name is already in use
    Dadurch kann ich die Core Klasse ContentElement eben nicht mehr, wie folgt überschreiben:

    Meine ContentElement.php:
    PHP-Code:
    namespace MeinNamespace;

    abstract class 
    ContentElement extends \Contao\ContentElement
    {
      ...

    Weiß hier jemand Rat, wie ich evtl. das wieder hinbekommen. Mir ist klar, dass man das auch über ein Contao 4 Bundle lösen könnte, aber das Modul jetzt in ein Bundle umzubauen wird vom Kunden nicht bezahlt.

    Prinzipiell ist das Problem aber auch als Bug anzusehen, da BC Break, oder?

    Vielen Dank im Voraus für jede hilfreiche Antwort.

  2. #2
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.512
    User beschenken
    Wunschliste

    Standard

    Das ist kein BC Break der nicht erlaubt wäre. Deshalb ist es ja eine neue Major Release!
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  3. #3
    Contao-Urgestein
    Registriert seit
    29.10.2009.
    Ort
    Magdeburg
    Beiträge
    2.020
    Partner-ID
    626
    User beschenken
    Wunschliste

    Standard

    Ja, das wurde entfernt. War so eines der Auswüchse von Contao, die es besser nie unterstützt hätte.
    Ist übrigens dokumentiert: https://github.com/contao/contao/blo...o-class-loader

  4. #4
    Contao-Nutzer
    Registriert seit
    18.02.2010.
    Beiträge
    10

    Standard

    Ich dachte, dass sowas von Minor zu Minor Release eigentlich noch tun sollte. Aber wenn das bewusst so ist, dann ist es auch in Ordnung.

    Aber die Frage die viel wichtiger für mich ist, gibt es eine Möglichkeit, ohne ein Bundle zu schreiben?

  5. #5
    Contao-Nutzer
    Registriert seit
    18.02.2010.
    Beiträge
    10

    Standard

    Zitat Zitat von webstar Beitrag anzeigen
    Ja, das wurde entfernt. War so eines der Auswüchse von Contao, die es besser nie unterstützt hätte.
    Ist übrigens dokumentiert: https://github.com/contao/contao/blo...o-class-loader
    Danke für den Hinweis. Hab zwar die DEPRECATED.md gelesen, aber dann wohl den wichtigen Part überlesen.

  6. #6
    Contao-Urgestein
    Registriert seit
    29.10.2009.
    Ort
    Magdeburg
    Beiträge
    2.020
    Partner-ID
    626
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von ben2010 Beitrag anzeigen
    Ich dachte, dass sowas von Minor zu Minor Release eigentlich noch tun sollte. Aber wenn das bewusst so ist, dann ist es auch in Ordnung.
    Es handelt sich mit Contao 4 aber um ein Major-Release

    Zitat Zitat von ben2010 Beitrag anzeigen
    Aber die Frage die viel wichtiger für mich ist, gibt es eine Möglichkeit, ohne ein Bundle zu schreiben?
    Du wirst die Funktion auch nicht mit einem Bundle wiedererhalten. Ohne zu wissen, was du genau machst, lässt sich nicht sagen was eine Alternative wäre. Normalerweise kann man vieles über die Hooks von Contao regeln.

  7. #7
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.077
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Contao 4 ist ein Major-Release. Aber wenn es mit 4.5 noch funktioniert hat und mit mit 4.6 nicht mehr wie hier angeführt, also von einer Minor-Version zur nächsten, dann ist es ein BC Break. Außer man betrachtet es als einen Bug, dass es zuvor möglich war.

  8. #8
    Contao-Nutzer
    Registriert seit
    18.02.2010.
    Beiträge
    10

    Standard

    Also, dann beschreibe ich mal genauer, was ich eigentlich erreichen will.

    Meine Extension fügt für jedes Content Element in Contao ein Select-Feld hinzu, wo vordefinierte Werte gewählt werden können.
    Wenn dann ein beliebiges Content Element im Frontend generiert wird, prüft die Extension, welcher Wert des Feldes gesetzt wurde und fügt bei $this->arrData['cssID'][1] eine zusätzliche CSS-Klasse hinzu.
    Dadurch funktioniert das bei allen Content-Elementen, auch von anderen Erweiterungen.

    Man könnte natürlich das Ganze auch über die block_searchable und block_unsearchable Templates lösen, welche ja meist verwendet werden. Aber eben nicht alle Content Elements verwenden das zwingend. Oder wenn jemand die Templates anpasst und dabei die Vererbung der zwei block_* Templates rauswirft, funktioniert es nicht mehr.

    Aktuell wüsste ich nicht, welcher Hook mir hier helfen kann, da es keinen für das ContentElement Rendering gibt.

    Hat jemand eine Idee?

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

    Standard

    Nimm doch einfach den parseTemplate Hook. Dort kannst du überprüfen, ob die Variable vorhanden ist und wenn ja, fügst du das als CSS Klasse hinzu.
    Geändert von Spooky (25.11.2018 um 14:54 Uhr)

  10. #10
    Contao-Fan Avatar von PaddySD
    Registriert seit
    26.10.2016.
    Ort
    Andechs
    Beiträge
    656

    Standard

    Da ist was schief gegangen bei Deinem Link, Spooky:
    https://docs.contao.org/books/api/ex...eTemplate.html

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

    Standard

    fixed

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
  •