Ergebnis 1 bis 8 von 8

Thema: Modulfragen - Wie mache ich das richtig?

  1. #1
    Contao-Nutzer
    Registriert seit
    19.06.2009.
    Beiträge
    15

    Standard Modulfragen - Wie mache ich das richtig?

    Hallo,

    Plane gerade eine Anwendung, welche auf eine andere DB zugreift, als die von TL.

    U.a. soll es eine angepasste Navigation geben, welche aus dieser DB geladen wird, und es soll dann ein Modul geben welches die Einträge zu dieser Navigation bearbeiten kann.

    Dazu habe ich einige Fragen:

    1. Wie kann ich Global wichtige Daten für die Anwendung modul übergreifend speichern, so das z.b. ein Modul die Auswahl aus der Navigation auslesen kann.
    $GLOBALS erscheint mir hier der richtige Kandidat, aber wo genau leg ich das ab?
    Auch hier am liebsten so, das sie mit der Usersession verknüpft sind, da das alles nur nach Login eine Rolle spielt. z.b. die DB Connection etc.

    2. Wo in TL bekomme ich den aktuell eingeloggten User her?
    Reicht da ein $this->import('FrontendUser', 'User'); evtl schon?
    Ich muss nämlich z.B. aus der eigenlichen DB damit den eigentliche Userid ermitteln:
    "SELECT id FROM user WHERE user_id = $this->User->id AND user_type ='TL'"

    das wärs erstmal

    p.s. ich habe bereits diverse Dokus gelesen, u.a. auch Leos Präsentation zu TL, das hat mir schon mal einen guten Überblick verschafft, dennoch bleiben einige Details die mir Unklar sind.

    phlox
    Geändert von phlox81 (01.07.2009 um 10:45 Uhr)

  2. #2
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo phlox,

    Es ist in TYPOlight nicht vorgesehen, mittels der Datenbank-Klasse auf eine andere Server zu zu greifen. Eine andere Datenbank auf demselben Server wäre noch möglich - vorausgesetzt du verwendest dieselben Benutzerdaten.

    Ich habe dies einmal gemacht, und zwar einfach indem ich direkt mysql_connect, mysql_query usw. benutzt habe. Du musst dann einfach darauf achten immer die Resource-ID mitzugeben!

    Aus deinem Post ist noch nicht so richtig ersichtlich was für Daten du global bereitstellen willst, und besonders warum. Das mit dem FrontendUser müsste klappen.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  3. #3
    Contao-Nutzer
    Registriert seit
    19.06.2009.
    Beiträge
    15

    Standard

    Zitat Zitat von andreas.schempp Beitrag anzeigen
    Es ist in TYPOlight nicht vorgesehen, mittels der Datenbank-Klasse auf eine andere Server zu zu greifen. Eine andere Datenbank auf demselben Server wäre noch möglich - vorausgesetzt du verwendest dieselben Benutzerdaten.

    Ich habe dies einmal gemacht, und zwar einfach indem ich direkt mysql_connect, mysql_query usw. benutzt habe. Du musst dann einfach darauf achten immer die Resource-ID mitzugeben!
    Also mir gehts auch darum, wie ich in TL Datenquellen verwende, die nicht in TL liegen. Sei es nun eine DB oder z.b. ein SOAP Webservice.
    Das ich dann evtl. eine neue Instanz der DB Klasse erstellen müsste ist mir klar, oder ist Database ein Singleton?
    Gut, notfalls müsste ich dass dann wohl über PHP regeln, was ja kein Hexenwerk wäre.

    Zitat Zitat von andreas.schempp Beitrag anzeigen
    Aus deinem Post ist noch nicht so richtig ersichtlich was für Daten du global bereitstellen willst, und besonders warum. Das mit dem FrontendUser müsste klappen.
    Mir gehts generell ein wenig um die Frage, wie man komplexere Anwendungen in TL umsetzt, wo man globale Daten ablegt, gerade wenn sowas Modul übergreifend ist. Wie ich schon im ersten posting sagte, $GLOBALS wäre passend, aber am liebsten würde ich es in die Usersession legen, wie komm ich da ran?

    Zum Beispiel habe ich in meiner Planung eine Seite auf der dann aus der DB der Baum links angezeigt wird (als Navigation), und in der Mitte soll dann jeweils für diese Objekte der korrekte View erscheinen.

    Bei der Navigation, ist mir auch zur zeit noch etwas unklar, wie genau ich die Datenübertragung umsetze, weil das ja alles auf die selbe Seite verweisst.
    mydomain.de/treepage.html?id=12, wie kann ich im Modul dann auf die id zugreifen? Danach müsste ich ja den Baumdarstellen, als auch in dem Listenmodul den Inhalt auflisten.
    Gibt es evtl. eine Klasse welche mir die korrekte URL generiert (mod_rewrite y/n z.b.).

    Ich bin halt da zur Zeit in der Planungsphase, da ist nicht alles sonnenklar schon ausdefiniert

    phlox
    Geändert von phlox81 (01.07.2009 um 11:05 Uhr)

  4. #4
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Also die Datenbank-Klasse ist eine Singleton, am besten schaust du dir die Doku (oder noch bessern den Sourcecode) an.

    Globale Daten legst du eigentlich in der DB ab
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  5. #5
    Contao-Nutzer
    Registriert seit
    19.06.2009.
    Beiträge
    15

    Standard

    Zitat Zitat von andreas.schempp Beitrag anzeigen
    Also die Datenbank-Klasse ist eine Singleton, am besten schaust du dir die Doku (oder noch bessern den Sourcecode) an.
    Ja die Doku kenne ich, und wenns in die Praxis geht, werd ich da auch mal häufiger nachlesen.
    Das eine Databaseklasse ein Singleton ist, hätte ich jetzt aber erstmal nicht gedacht.

    Zitat Zitat von andreas.schempp Beitrag anzeigen
    Globale Daten legst du eigentlich in der DB ab
    Ja einen Teil(wo das sinn macht, Usersession bezogene Daten würde ich aber gerne in der Session haben, anstatt bei jeden klick die DB zu bemühen.), aber z.b. hier, diese Sache macht mir Kopfzerbrechen:
    Ich plane ja eine eigene Navigation, für dies _keine_ links ala mydomain.de/foo.html gibt, sondern wieder auf die selbe Seite verlinkt, wo dann noch die jeweilige ID angegeben ist.
    Wie genau hänge ich diese id korrekt an die URL in TL dann an, gibt es sowas wie einen Linkgenerator?
    mydomain.de/foo.html?tid=2 wäre die einfache Variante.
    Und wie komme ich dann in dem anderen Modul da dran, $_GET wäre die PHP Variante, aber ist das für TL auch empfehlenswert, oder gibt es da was anderes?

    phlox

  6. #6
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Du scheinst mit der TYPOlight-Entwicklung noch nicht vertraut zu sein (macht ja nix) ;-)

    Für die URL solltest du ggf. die generateFrontendUrl Funktion verwenden. Wenn du z.B. eine Weiterleitung nur auf die ID auf derselben Seite machen willst, könnte das so klappen:

    PHP-Code:
    global $objPage// Aktuelle Seite (Datenbank-Zeile)

    $strUrl $this->generateFrontendUrl($objPage->row(), 'id=12'); 
    Die URL ist dann allerdings nicht mydomain.de/treepage.html?id=12 sondern mydomain.de/treepage/id/12.html


    Für das auslesen der Daten - generell für alles was "reinkommt", solltest du die Input-Klasse verwenden.

    PHP-Code:
     // nur nötig bei komplett eigenständigen Klassen. Alles was auf einer TL-Klasse basiert ("extends Module") beinhaltet das bereits.
    $this->import('Input')

    $strId $this->Input->get('id'); 
    Das macht nicht viel anderes als $_GET['id'], nur werden Sicherheitsbereinigungen (XSS-Attack) gefiltert.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  7. #7
    Contao-Nutzer
    Registriert seit
    19.06.2009.
    Beiträge
    15

    Standard

    Zitat Zitat von andreas.schempp Beitrag anzeigen
    Du scheinst mit der TYPOlight-Entwicklung noch nicht vertraut zu sein (macht ja nix) ;-)
    Ja, habe letztes Jahr mit TL angefangen, aber jetzt erst mit der Programmierung zu tun. PHP/C++ schreibe ich normalerweise, will aber auch halt komplexere Sachen mit TL umsetzen können.

    Zitat Zitat von andreas.schempp Beitrag anzeigen
    Für die URL solltest du ggf. die generateFrontendUrl Funktion verwenden. Wenn du z.B. eine Weiterleitung nur auf die ID auf derselben Seite machen willst, könnte das so klappen:

    PHP-Code:
    global $objPage// Aktuelle Seite (Datenbank-Zeile)

    $strUrl $this->generateFrontendUrl($objPage->row(), 'id=12'); 
    Die URL ist dann allerdings nicht mydomain.de/treepage.html?id=12 sondern mydomain.de/treepage/id/12.html
    Ah, das ist was ich da gesucht habe
    Ist $objPage jetzt nur ein Beispiel, oder existiert diese Variable in TL global?
    Werde diese Daten aber warscheinlich sowieso aus einer config.datei lesen.

    Zitat Zitat von andreas.schempp Beitrag anzeigen
    Für das auslesen der Daten - generell für alles was "reinkommt", solltest du die Input-Klasse verwenden.

    PHP-Code:
     // nur nötig bei komplett eigenständigen Klassen. Alles was auf einer TL-Klasse basiert ("extends Module") beinhaltet das bereits.
    $this->import('Input')

    $strId $this->Input->get('id'); 
    Das macht nicht viel anderes als $_GET['id'], nur werden Sicherheitsbereinigungen (XSS-Attack) gefiltert.
    Hm, hatte die Inputklasse bisher eher mit Formularen gesehen, ist aber gut zu wissen, das sie auch für alles andere taugt.

    soweit erstmal alle Klarheiten beseitigt, melde mich wenn ich weitere Fragen habe

    phlox

  8. #8
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Auf $objPage kannst du immer zugreifen wenn du es selber global machst.

    Input kann get, post und cookie-Daten einlesen (siehe Funktionen).
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Subnavigation horizontal in 2 Listen - wie mache ich das?
    Von Sunnygarden im Forum Layout / Templates / Holy Grail
    Antworten: 7
    Letzter Beitrag: 06.03.2011, 20:33
  2. Wie mache ich dies mit Contao
    Von pinball im Forum Allgemeine Inhaltselemente
    Antworten: 3
    Letzter Beitrag: 10.01.2011, 08:54
  3. Mache alles Richtig und es funktioniert trotzdem nicht!
    Von xxopenedxx im Forum Nachrichten/Events/FAQ
    Antworten: 2
    Letzter Beitrag: 24.08.2010, 10:43
  4. Probleme mit Nachrichten, was mache ich falsch?
    Von AR79 im Forum Nachrichten/Events/FAQ
    Antworten: 7
    Letzter Beitrag: 31.03.2010, 10:13
  5. Was mache ich falsch?
    Von le_typ_01 im Forum Layout / Templates / Holy Grail
    Antworten: 2
    Letzter Beitrag: 05.07.2009, 23:01

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •