Ergebnis 1 bis 7 von 7

Thema: [gelöst]: Wie ist die Namenskonvention für Contao Module - Verzeichnis/Datei/Klasse

  1. #1
    Contao-Nutzer
    Registriert seit
    12.07.2015.
    Ort
    Berlin / Brandenburg
    Beiträge
    5

    Frage [gelöst]: Wie ist die Namenskonvention für Contao Module - Verzeichnis/Datei/Klasse

    Hallo,

    nach dem das Modul in in Contao erkannt wurde (Problem aus: Wie-werden-eigene-Module-in-Contao-erkannt-und-eingebunden?)
    habe ich es gleich eingestellt und siehe da, keinerlei Reaktion bzw. Ausgabe.

    Ich habe mir zwischenzeitlich Trills Videos angsehen (bis aktuell Video 9 - DCA Teil 1)
    und da er immer wieder mal das Contao log erwähnte, habe ich da mal reingesehen.

    Das war dann auch gar nicht mal so schlecht, denn jetzt habe ich meinen ersten Hinweis:

    Module class "camedia\module\UnifiedCheckout" (module "iso_camedia_unifiedcheckout") does not exist
    Wie ich das das ganze aufgebaut habe:

    Modulverzeichnis: isotope_camedia_unified_checkout

    \config\config.php
    PHP-Code:
    $GLOBALS['FE_MOD']['isotope']['iso_camedia_unifiedcheckout'] = 'camedia\module\UnifiedCheckout'
    \camedia\module\UnifiedCheckout.php
    PHP-Code:
    class UnifiedCheckout extends IsotopeCheckout
    {

        
    /**
         * Template
         * @var string
         */
        
    protected $strTemplate 'iso_camedia_unifiedcheckout'

    Frage 1: Reichen die Infos aus, um zu sehen, wo mein Fehler liegt?
    Frage 2: Warum haben die ganzen PHP Dateien einen Anfangstag : <?php.... aber keinen Endtag?


    Gelöst:

    Entsprechend Eurer Rückmeldungen und den verschiedenen Tutorials/Screencast Video Reihe habe ich
    versucht das Modul Standard-Konform zu machen. Ich habe
    • den NamespaceClassLoader entfernt
    • Alle Verweise auf den gesetzten Namespace in den Dateien entfernt
    • Gelernt, dass der Schlüssel für die Paletten in der DCA-Datei und der Schlüssel für das Frontend Module in der Config-Datei übereinstimmen müssen, damit das Modul in der Liste der Frontend Module im Backend angezeigt wird.
    • Gelernt, dass wenn eine eigene Erweiterung auf eine Drittanbieter Erweiterung basiert, diese auch vorher geladen werden muss, damit das eigene Modul in der Liste unterhalb der Drittanbieter Überschrift angezeigt wird. Dies habe ich dann über die autoload.php gelöst.



    Vielen Dank nochmals und Gruß
    Antonio
    Geändert von musicones (20.07.2015 um 14:18 Uhr) Grund: Gelöst

  2. #2
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    du hast keine config/autoload.php, da drin musst du deine klasse definieren
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

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

    Standard

    Frage 2: Warum haben die ganzen PHP Dateien einen Anfangstag : <?php.... aber keinen Endtag?
    Weil der nicht benötigt wird.
    Und auch mal Probleme machte bei Dateien die im Contao Cache zu einer zusammen gefasst werden. Ob das noch so ist keine Ahnung.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  4. #4
    Contao-Nutzer
    Registriert seit
    12.07.2015.
    Ort
    Berlin / Brandenburg
    Beiträge
    5

    Standard

    Hallo nochmal,

    erst einmal danke für die Antworten und Infos.
    Es wäre erstmal grundsätzlich gut zu wissen, wie sich die Namensgebung verhalten muss.

    Zu meinem konkreten Problem:

    Eine autoload.php und eine autoload.ini sind vorhanden. Das hatte ich nicht erwähnt.

    Ich habe einiges geändert in der Zwischenzeit, aber kein Erfolg gehabt. Deshalb hier nochmal
    meine aktuellen Einträge in den verschiedenen Dateien:

    \config\autoload.php
    PHP-Code:
    NamespaceClassLoader::add('camedia''system/modules/isotope_camedia_unified_checkout/library'); 
    \config\config.php
    PHP-Code:
    $GLOBALS['FE_MOD']['isotope']['iso_camedia_unifiedcheckout'] = 'camedia/module'

    \library\camedia\module\iso_camedia_unifiedcheckou t.php

    PHP-Code:
    namespace camedia\module;
    use 
    Isotope\Module\Checkout as IsotopeCheckout;
    class 
    iso_camedia_unifiedcheckout extends IsotopeCheckout
    {... 
    Aktuelle Fehlermeldung
    Module class "camedia/module/iso_camedia_unifiedcheckout" (module "iso_camedia_unifiedcheckout") does not exist
    Ich vermute ja stark, dass es daran liegt, wie ich den Namespace bzw. die Klassen oder Dateien benannt habe, dass er das nicht finden kann. Ich finde aber aktuell auch nicht heraus, wie es korrekt wäre.

    Danke und Gruß
    Antonio

  5. #5
    Contao-Nutzer
    Registriert seit
    07.03.2013.
    Ort
    Schweiz
    Beiträge
    124
    User beschenken
    Wunschliste

    Standard

    Hallo musicones

    Wo genau das technische Problem liegt, ist für mich so aus der Ferne etwas schwierig zu sagen. Mir sind aber folgende Sachen an deinem geposteten Code aufgefallen:

    1. Welche Contao-Verson verwendest du? 3/4 haben doch einige Unterschiede.
    2. Schau dir mal die Code Conventions der CCA an: https://c-c-a.org/aktuelles/news/det...ng-conventions
    3. Hier kannst du parallel zu Trills Screencast ein einfaches Modul bauen. http://de.contaowiki.org/C3:_Tutoria...il:_Grundlagen Danach dürftest du schon etwas mehr Durchblick haben. Leider bricht die Anleitung vor der Fertigstellung ab, sollte dir aber trotzdem mal einen vernünftigen Einstieg in Ordnerstruktur und Datei/Klassenbenennung geben.
    4. Ein alternatives Modul-Tutorial: http://www.designs2.de/tutorials/art...tml?page_r51=4
    5. Mir ist der Pfad \library\camedia\module\ für Module unbekannt. Hast du dieses Verzeichnis wegen Isotope gewählt? Eigentlich liegen Contao-Module in system/modules/
    6. Gemäss der Konvention (und auch sonst in PHP üblich) sollte deine Klasse iso_camedia_unifiedcheckout eigentlich IsoCamediaUnifiedCheckout heissen
    7. Deine autoloader.php Datei scheinst du über das Modul NamespaceClassLoader zu laden. Wurde das installiert? Contao selber verwendet nämlich ClassLoader::addNamespace. Falls du trotzdem das Modul verwenden möchtest, solltest du mal schauen, ob du dafür eine Anleitung findest.
    8. Hast du die autoloader.php über den Backend "Autoloader Creator" erstellt? Ich würde dir empfehlen zumindest am Anfang auf diese Üblichen weg zu setzen. Wenn du dir nämlich nach dem Ausführen des Creators die autoloader.php ansiehst, weisst du gleich ob Contao deine Dateien und Klassen überhaupt gefunden hat.


    Hoffe das liefert dir mal etwas Anregung und führt dich ans Ziel.


    Gruss
    Patric
    Seit 2014 Entwickler von i18nl10n auf privater Basis. GitHub Repository

    Du willst die Weiterentwicklung von i18nl10n unterstützen? Eine Spende oder ein Geschenk sorgt für die nötigen Ressourcen und Motivation!

  6. #6
    Contao-Nutzer
    Registriert seit
    07.12.2009.
    Beiträge
    151

    Standard

    Hallo zusammen,

    Der NamespaceClassLoader implementiert PSR-0, dementsprechend sollte deine Klasse auch IsoCamediaCheckout heißen und die Datei entsprechend IsoCamediaCheckout.php in camedia/modules.

    Steht ja aber auch schon im Post vor meinem unter 6. Mea culpa.
    Geändert von zinky (18.07.2015 um 13:59 Uhr)

  7. #7
    Contao-Nutzer
    Registriert seit
    12.07.2015.
    Ort
    Berlin / Brandenburg
    Beiträge
    5

    Standard Zwischenbericht

    Guten Morgen,

    vielen Dank für die Antworten. Ich gehe das gerade alles durch und versuche die Zusammenhänge besser zu verstehen.
    Ich melde mich sobald ich Eure Hinweise durchgeackert und entweder Erfolg oder weitere Fragen zu vermelden habe.

    Danke nochmals soweit,

    Antonio

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
  •