Contao-Camp 2024
Ergebnis 1 bis 8 von 8

Thema: Datenbank - Ajax - Hook - DCA - Routing

  1. #1
    Contao-Nutzer
    Registriert seit
    04.01.2021.
    Beiträge
    3

    Standard Datenbank - Ajax - Hook - DCA - Routing

    Hi,

    mein erster Post um aus dem Wald herauszufinden.

    Ich habe mit Contao 'Bordmitteln' meine ersten Webseiten erstellt und abseits von Contao prinzipiell etwas Erfahrung mit Javascript, Ajax, PHP und phpadmin.

    Als nächsten Schritt habe ich mir vorgenommen einem (eingeloggten) Benutzer ein paar Checkboxen anzubieten und seine Auswahl in der DB abzuspeichern (wenn er einen 'Sichern' Button drückt) und diese Daten beim Öffnen der Seite auch wieder zu laden, sprich die Checkboxen entsprechend vorzubelegen.
    (Später soll dann zusätzliche Logik hinzukommen, d.h. in Abhängigkeit der Checkbox-Auswahl auf Anfrage bestimmte Informationen angezeigt werden)

    Nach Studium des Handbuchs bin ich jetzt völlig unschlüssig in welche Thematik ich mich tiefer einarbeiten muss.
    Symfonie-Routing und/oder Contao-DCA/Hooks? Lege ich die entsprechende Datenbank-Tabelle mit phpadmin an? Setzt man in in Javascript/Ajax entsprechende GET/PUT requests ab, die dann auf PHP-Seite bei der Datenbank zu SELECT/UPDATE führen?

    Erklärung wäre super, mir würde aber schon viel helfen wenn mir jemand sagen könnte welche Kenntnisse ich mir aneignen sollte.

  2. #2
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von achtung Beitrag anzeigen
    Als nächsten Schritt habe ich mir vorgenommen einem (eingeloggten) Benutzer ein paar Checkboxen anzubieten und seine Auswahl in der DB abzuspeichern (wenn er einen 'Sichern' Button drückt) und diese Daten beim Öffnen der Seite auch wieder zu laden, sprich die Checkboxen entsprechend vorzubelegen.
    Für eine genauere Planung ist die Info etwas dünn... geht es um die Benutzer oder Mitglieder?

    Es kann die Tabelle tl_user bzw. tl_member um eigene Spalten erweitert werden - das machst Du mit einer eigenen DCA-Datei wie im Handbuch beschrieben.

    Wenn Du das Installtool (oder Migration) ausführst, prüft Contao diese Dateien und vergleicht die Sachen mit der vorhenden Datenbank - dann können auf Nachfrage Tabellen und Spalten angelegt oder wieder gelöscht werden.

    Anschließend könntest Du dich um die weitere Programmlogik per Hooks/Events kümmern...

  3. #3
    Contao-Nutzer
    Registriert seit
    04.01.2021.
    Beiträge
    3

    Standard

    Erstmal danke für die Antwort.

    (Die Anwendung soll ein Schulungsportal werden. Mit den Checkboxen wird Nutzern angezeigt welche Kurse/Videos jeweils schon bearbeitet wurden)

    Da DCA und Hooks erwähnt wurden habe ich mich jetzt durchs 'Getting Started - Starting your Development' bemüht und damit jetzt (mindestens) 3 (Anfänger?)Probleme:

    Was ich generell in der Dokumentation vermisse ist die Beschreibung was man machen muss, damit die entsprechenden Änderungen aktiv werden (Symfony Cache löschen, Browser-Cache löschen, Contao-Install-Tool,...???)

    1.
    Ich vermute, dass ich schon beim 'Starting your Development' etwas falsch gemacht/verstanden habe.

    Ich habe config/services.yaml und config/routing.yaml exakt so angelegt wie es dort beschrieben ist, d.h.

    routing.yaml
    Code:
    app.controller:
        resource: ../src/Controller
        type: annotation
    service.yaml:
    Code:
    services:
        _defaults:
            autowire: true
            autoconfigure: true
            public: false
    
        App\:
            resource: ../src
            exclude: ../src/{Entity,Migrations,Model,Resources,Tests,Widget}
        
        App\Controller\:
            resource: ../src/Controller
            public: true
    Eine Folge war, dass auf Dateien in .../files nicht mehr von außen zugegriffen werden kann. Wenn man routing.yaml und service.yaml wieder löscht bleibt das Verhalten bei der Webseite leider so.

    2.
    in contao/dca/tl_xxx.php habe ich eine neue Tabelle definiert (man könnte für das was ich beschrieben habe auch die tl_user erweitern, aber ich wollte erstmal nichts bestehendes verändern)

    Beim Aufruf des Install-Tools war lange 'Datenbank aktuell' zu sehen (ohne dass die neue Tabelle eingetragen worden wäre). Irgendwann wurde mir dann doch mal ein 'Update Database'
    angeboten - jetzt mit dem Effekt, dass es auch nach dem Anlegen der Tabelle bei jedem Aufruf von Install-Tool das weiterhin erneut angeboten wird!?

    3.
    in src/Controller habe ich ein MyController.php angelegt (in der Hoffnung dort eines Tages GET/PUT requests abwickeln zu können)

    Im Moment steht dort nicht mehr drin als:

    PHP-Code:
    namespace App\Controller;
    class 
    MyController {} 
    Aber auch das führt schon zu einer Fehlermeldung wenn man im Contao-Manager unter Maintenance einen 'Symfony - Rebuild Production Cache' anstößt:

    Code:
    Expected to find class "App\Controller\MyController" in file "../.../src/Controller/MyController.php" while importing services from resource "../src", but it was not found! Check the namespace prefix used with the resource.
    Verstehe ich nicht, da in dem File ja die class entsprechend definiert ist.
    Geändert von Spooky (06.01.2021 um 03:19 Uhr)

  4. #4
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    o.k. - geht es also doch um Mitglieder und nicht um Benutzer...

    ggf. ist es leichter, die Datenstruktur nicht in die tl_member rein zu setzen und das separat zu speichern - mit MetaModels (MM) könntest Du das zum größten Teil im BE konfigurieren und sonderbehandlungen über die MM-API abfrühstücken

    Eine Schulungsseite mit Zwischen- und Endprüfungen habe ich mal für https://www.betonwissen.at/ mit MM umgesetzt.

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

    Standard

    Moderation: @achtung bitte [code] Tags im Forum verwenden, damit man die Posts leichter lesen kann.

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

    Standard

    Zitat Zitat von achtung Beitrag anzeigen
    Eine Folge war, dass auf Dateien in .../files nicht mehr von außen zugegriffen werden kann. Wenn man routing.yaml und service.yaml wieder löscht bleibt das Verhalten bei der Webseite leider so.
    Mit deinen routing.yml und services.yml Änderungen hat dies nichts zu tun. Dateien in files/ sind von außen nur erreichbar, wenn du die entsprechenden Unterordner dediziert auf "Öffentlich" stellst.

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

    Standard

    Zitat Zitat von achtung Beitrag anzeigen
    Was ich generell in der Dokumentation vermisse ist die Beschreibung was man machen muss, damit die entsprechenden Änderungen aktiv werden (Symfony Cache löschen, Browser-Cache löschen, Contao-Install-Tool,...???)
    Ich denke ich werde dazu noch eine eigene Sektion einfügen für eine Empfehlung einer lokalen Entwicklungsumgebung (nur Contao, sans Webserver etc.).

  8. #8
    Contao-Nutzer
    Registriert seit
    04.01.2021.
    Beiträge
    3

    Standard

    Danke. Das wäre wirklich hilfreich.

    Dass der Zugang zu files über das Backend konfigurierbar ist wusste ich und habe es wieder zurück gesetzt.
    Unklar ist eben wie das passieren konnte wenn man auf Dateiebene 'herumpopelt'

    Die Fehlermeldung bzgl. der angeblich fehlenden php-class ist noch offen. Ich werde mich mal versuchen bei Symfony kundig zu machen.

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
  •