Das Contao Camp 2020 in Hamburg. LEIDER ABGESAGT!
Ergebnis 1 bis 6 von 6

Thema: Eigener Inputtype, Problem ClassLoader zu ersetzen nach neuer Struktur

  1. #1
    Contao-Nutzer
    Registriert seit
    15.10.2015.
    Beiträge
    104

    Frage Eigener Inputtype, Problem ClassLoader zu ersetzen nach neuer Struktur

    Hallo,

    mein eigener Inputtype hat mit Contao 3/4 immer funktioniert, nun aktualisiere ich nach und nach meine Erweiterungen in eine neue Struktur (weg aus dem system/moduls in den vendor Ordner).
    Bei kleinen Erweiterungen lief das.

    in der alten config.php hatte ich vorher über
    PHP-Code:
    ClassLoader::addClasses(array(
    'widget_mm_inputtype' => 'system/modules/mm_inputtype/src/Resources/contao/widgets/widget_mm_inputtype.php',
    )); 
    meine Hauptdatei geladen. Aber die wird nach den Änderungen nicht mehr ausgeführt.


    Ich habe die widget_mm_inputtype aktuell auch nicht mehr im widgets Ordner, die genaue Struktur unter:
    /vendor/kalterwind/mm_inputtype_bundle im Bild:

    Anmerkung 2020-03-18 084803.jpg

    Plugin.php:
    PHP-Code:
    namespace kalterwind\mminputtypebundle\ContaoManager;

    use 
    Contao\CoreBundle\ContaoCoreBundle;
    use 
    Contao\ManagerPlugin\Bundle\BundlePluginInterface;
    use 
    Contao\ManagerPlugin\Bundle\Config\BundleConfig;
    use 
    Contao\ManagerPlugin\Bundle\Parser\ParserInterface;
    use 
    kalterwind\mminputtypebundle\mminputtypebundle;
    use 
    kalterwind\mminputtypebundle\widget_mm_inputtype;

    class 
    Plugin implements BundlePluginInterface
    {
        public function 
    getBundles(ParserInterface $parser)
        {
            return [
                
    BundleConfig::create(mminputtypebundle::class)->setLoadAfter([ContaoCoreBundle::class]),
            ];
        }

    config.php:
    PHP-Code:
    $GLOBALS['BE_FFL']['mm_inputtype'] = 'widget_mm_inputtype'
    widget_mm_inputtype.php:
    PHP-Code:
    namespace kalterwind\mminputtypebundle;
    use 
    Symfony\Component\HttpKernel\Bundle\Bundle;
    class 
    widget_mm_inputtype extends Contao\Widget{} 
    Stehe etwas auf dem Schlauch und habe sicher einen groben Fehler drin?

    Gruss

  2. #2
    Contao-Nutzer
    Registriert seit
    15.10.2015.
    Beiträge
    104

    Standard

    Niemand einen Tipp wie ich ClassLoader::addClasses(array(
    'widget_mm_inputtype' => 'system/modules/mm_inputtype/src/Resources/contao/widgets/widget_mm_inputtype.php',
    )); ersetze mit neuer Struktur?

    Über die Suche nichts gefunden bzw Google, wahrscheinlich sehe ich gerade den Wald vor lauter Bäumen nicht.

  3. #3
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Vienna, Austria
    Beiträge
    23.098
    Partner-ID
    10107
    User beschenken
    Wunschliste

    Standard

    Nutze doch https://docs.contao.org/dev/getting-started/ zur Einführung. Du solltest dir außerdem die PHP Standard Recommendations ansehen, insbesondere PSR-4 bspw.

    • Den Contao Classloader brauchst du nicht mehr in deinem Fall.
    • Deine Klassen lässt du per Composer laden ("autoload" Konfiguration in der composer.json deiner Extension).
    • Dein Widget gibst du am besten in einen passenden Namespace, also zB. unter src/Widget/MetaModelsInputTypeWidget.php (= \kalterwind\mminputtypebundle\Widget\MetaModelsInputTypeWidget).
    • Es ist üblich bei Namespaces und Klassennamen eher Camel Case zu verwenden. Also dein Root Namespace sollte eher Kalterwind\MmInputTypeBundle lauen.

  4. #4
    Contao-Nutzer
    Registriert seit
    15.10.2015.
    Beiträge
    104

    Standard

    Danke soweit für die Mühe.
    Läuft noch nicht so ganz.

    In meinen "einfachen" Erweiterungen ohne eigenen Inputtype steht:
    PHP-Code:
    namespace kalterwind\mminputtypebundle;
    use 
    Symfony\Component\HttpKernel\Bundle\Bundle;
    class 
    mminputtypebundle extends Bundle{} 
    Muss ich über USE hier auch eine Widget Klasse laden, da ich "extends Bundle" mit "extends Contao\Widget" ersetzt habe?
    PHP-Code:
    class widget_mm_inputtype extends Contao\Widget{} 
    Finde die Anleitungen mittlerweile relativ umständlich, alleine da viel über Github läuft und es diverse Versionen gibt.
    Hier in meinem Fall laufen einfache Erweiterungen ja (wofür die meisten Anleitungen sind), der eigene Inputtype ist nur noch nicht integriert wie ich es vorher hatte.

    Die Links helfen mir leider nicht so ganz.

  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Vienna, Austria
    Beiträge
    23.098
    Partner-ID
    10107
    User beschenken
    Wunschliste

    Standard

    Ich kann dir im Rahmen eines Forum Thread Posts nicht alles vermitteln, was es zu wissen gibt über PHP und Symfony Bundle Entwicklung. Wenn für dich die Bundle Entwicklung noch sehr neu ist, dann solltest du Schritt für Schritt an die Sache ran gehen - und eben auch gängige Coding Standards einhalten.

  6. #6
    Contao-Nutzer
    Registriert seit
    15.10.2015.
    Beiträge
    104

    Standard

    Danke soweit. Klar, dass man nicht alles vermitteln kann. Nur denke ich auch nicht, dass ich mich dafür Stundenlang wo reinlesen muss und es dann vllt nicht mal finde.
    Ich gehe ja auch in die Fahrschule um Autofahren zu lernen, da wird mir gesagt was ich mache und ich muss nicht erst verstehen wie die Kupplung aufgebaut ist :-)

    Ich brauche das für meine Arbeit ansonsten nicht (stelle auch keine öffentlichen Erweiterungen her) und denke es sind wirklich nur wenige Zeilen... .
    Weiss zwar nicht ob das so korrekt ist, habe jedoch mal ein "Mini Auftrag" erstellt:
    https://community.contao.org/de/show...tao-4&p=522563

    Wünsche erstmal ein angenehmes Wochenende :-)

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
  •