Contao-Camp 2024
Ergebnis 1 bis 15 von 15

Thema: Contao 5.1: Ältere Erweiterungen in "system/modules" / autoload.php

  1. #1
    Contao-Fan Avatar von Seefahrer
    Registriert seit
    20.12.2012.
    Ort
    Wurster Nordseeküste
    Beiträge
    276

    Standard Contao 5.1: Ältere Erweiterungen in "system/modules" / autoload.php

    Moin an alle ...

    ich muß da mal ne Frage fragen:

    Ich habe eine Installation mit Contao 5.1 für die bereits einige Erweiterungen kompatibel gemacht habe (soweit meine begrenzten Fähigkeiten die zulassen.
    (wr/onepagebundle, backend-optim etc.)

    Nun habe ich noch eine alte Erweiterung, die in system/modules liegt, wo es letztlich am Laden der Klassen hängt ... Da ja in Contao 5 der Contao/classloader weggefallen ist,. werden Namespace und Classes in der autoload.php nicht geladen.

    Dazu 2 Fragen:

    1. Wird die autoload.php in ../config in Contao 5.x überhaupt noch ausgeführt (da dort auch templates geladen werden und der templateloader noch existiert, nehme ich an, dass ja ?!)
    2. Wie überrede ich den Composer, die in der Erweiterung definierten namespaces und classes zu laden.

    Ich wäre dankbar, wenn mir da jemand auf's Pferd helfen könnte ...

    Danke für alle Tipps - Georg
    Geändert von Seefahrer (22.10.2023 um 16:53 Uhr)

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

    Standard

    Zitat Zitat von Seefahrer Beitrag anzeigen
    2. Wie überrede ich den Composer, die in der Erweiterung definierten namespaces und classes zu laden.
    Kommt darauf an, wie die Klassen dort strukturiert sind. Du hast ja verschiedene Möglichkeiten: https://getcomposer.org/doc/04-schema.md#autoload
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Fan Avatar von Seefahrer
    Registriert seit
    20.12.2012.
    Ort
    Wurster Nordseeküste
    Beiträge
    276

    Standard

    Hallo Fritz,

    danke Dir, aber die Seite kenne ich schon. Wird denn die autoload.php überhaupt noch ausgeführt? Dort werden auch noch mittels dem Contao/TemplateLoader diverse templates geladen ...

    Die Klassen der Erweiterung (den Namen möchte ich sicherheitshalber nicht nennen):

    system/modules/xxx_extensionname/extensionname und darunter mehrere subdirectories mi den Klassen.

    Dem ersten Anschein zufolge würden sich m.E. "classmap" oder "files" anbieten?

    Beste Grüße Georg

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

    Standard

    Ohne weitere Details wirst du dir das selbst beantworten müssen
    » sponsor me via GitHub or PayPal or Revolut

  5. #5
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.450
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ist es nicht viel einfacher ein Contao Bundle draus zu machen? Mit Verbiegen und Co. tut man sich doch meist mehr weh. Uns zukunftsorientiert ist das auch nicht.

  6. #6
    Contao-Fan Avatar von Seefahrer
    Registriert seit
    20.12.2012.
    Ort
    Wurster Nordseeküste
    Beiträge
    276

    Standard

    An ein lokales bundle hatte ich auch schon gedacht.

    Trotzdem hätte ich gerne gewußt, ob die autoload.php unter 5.x noch ausgeführt wird. Google verrät mir dazu nichts.

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

    Standard

    Die autoload.php wird in Contao 5 grundsätzlich noch geladen. Aber was willst du dort machen?
    » sponsor me via GitHub or PayPal or Revolut

  8. #8
    Contao-Fan Avatar von Seefahrer
    Registriert seit
    20.12.2012.
    Ort
    Wurster Nordseeküste
    Beiträge
    276

    Standard

    Zitat Zitat von Seefahrer Beitrag anzeigen
    Dort werden auch noch mittels Contao/TemplateLoader diverse templates geladen ...
    ...

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

    Standard

    Das brauchst du in Contao 4 und 5 nicht mehr.
    » sponsor me via GitHub or PayPal or Revolut

  10. #10
    Contao-Fan Avatar von Seefahrer
    Registriert seit
    20.12.2012.
    Ort
    Wurster Nordseeküste
    Beiträge
    276

    Standard Contao 5.x - Controller::getImage (...) vs. pictureFactory

    Hallo ... ich trau' mich mal, nochmal zu fragen:

    Seit Contao 5 gibt es ja die Controller::getImage Methode nicht mehr. Ich habe einmal versucht, das mit der pictureFactory abzubilden,

    Leider kommt zur RunTime der Fehler:

    Code:
    Object of class Contao\Image\Picture could not be converted to string
    Weiß da jemand Rat? Danke!

    PHP-Code:
    if($objSlide->get('background') == 'image')
    {
        
    $objFile FilesModel::findByPk($objSlide->get('singleSRC'));
        
    $arrMeta StringUtil::deserialize($objFile->meta);
        
    $size StringUtil::deserialize($objSlide->get('size'));
                        
        
    // $file = Controller::getImage($src,$size[0],$size[1],$size[2]);
                        
        
    $pictureFactory System::getContainer()->get('contao.image.picture_factory');
        
    $rootDir System::getContainer()->getParameter('kernel.project_dir');
        
    $src $rootDir '/' .$objFile->path;
        
    $file $pictureFactory->create($src, [$size[0],$size[1],$size[2]]);
     
            .... 

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

    Standard

    https://docs.contao.org/dev/framework/image-processing/

    Du solltest übrigens nicht System::getContainer()->get() verwenden, sondern normale DI.
    » sponsor me via GitHub or PayPal or Revolut

  12. #12
    Contao-Fan Avatar von Seefahrer
    Registriert seit
    20.12.2012.
    Ort
    Wurster Nordseeküste
    Beiträge
    276

    Standard

    Die Dokumentation habe ich rauf und runter gelesen, auf Slack recherchiert usw., komme aber trotzdem nicht weiter …

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

    Standard

    Was genau willst du denn machen? Bzw. was ist das Ziel?
    » sponsor me via GitHub or PayPal or Revolut

  14. #14
    Contao-Fan Avatar von Seefahrer
    Registriert seit
    20.12.2012.
    Ort
    Wurster Nordseeküste
    Beiträge
    276

    HTML Tja ... so gehts ...

    Ich habe gerade gemerkt, dass ich (m)einem gewaltigen Logikfehler aufgesessen bin ...

    Das alte Controller::getImage liefert ja nur einen Pfad|null zurück und kein Image Object. Deshalb kann $file -logischerweise- kein Image Object zugewiesen bekommen

    Mein ganzes pictureFactory (Studio, imageFactory ...) - Gedöns ist damit (hier) völlig überflüssig, wenn auch nicht für die Katz .

    Eine einfaches
    PHP-Code:
    $file $objFile->path
    löst das Problem. Der Revolution Slider läuft nun auf Contao 5.x. Das Laden der Klassen habe ich übrigens via Classmap gelöst.
    Geändert von Seefahrer (30.03.2023 um 16:01 Uhr)

  15. #15
    Contao-Fan Avatar von Seefahrer
    Registriert seit
    20.12.2012.
    Ort
    Wurster Nordseeküste
    Beiträge
    276

    Standard

    Moin Spooky und andere Helfer,

    habe das Problem jetzt im Kontext korrekt (wie in UPGRADE.md) wie folgt gelöst:

    PHP-Code:
    $container System::getContainer();
    $rootDir $container->getParameter('kernel.project_dir');
    $file $container
        
    ->get('contao.image.factory')
        ->
    create($rootDir.'/'.$objFile->path, [$size[0],$size[1],$size[2]])
        ->
    getUrl($rootDir)

    Sicher kommt jetzt der Einwand das ganze - statt mittels System::getContainer - besser via DI zu machen. Wie geht das denn eigentlich? Hab mich schon wund gegoogelt und geyoutubed, irgendwie verstehe ich Dependency Injection (noch) nicht ...
    Geändert von Seefahrer (01.04.2023 um 11:02 Uhr)

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
  •