Ergebnis 1 bis 4 von 4

Thema: Hook, Callback, Eigene Funktionen - Einige Fragen dazu...

  1. #1
    Contao-Nutzer
    Registriert seit
    17.10.2011.
    Beiträge
    52

    Standard Hook, Callback, Eigene Funktionen - Einige Fragen dazu...

    Ich habe eine FE-Seite (KFZ-Details), auf der ein Besucher ein KFZ vormerken kann. Dazu klickt er auf einen normalen Button und ein entsprechender Eintrag wird in eine DB-Tabelle geschrieben. In protected function compile() hole ich dieses KFZ aus der Datenbank und im dazugehörigen Template übergebe ich die Daten mit Hidden-Felder auf eine andere Seite (Übersicht), die einen entsprechenden Hinweis zeigt und die Daten auch in die DB (andere Tabelle) schreibt. Zusätzlich dient diese Seite auch als allgemeine Übersicht, so daß der Besucher auch sehen kann, welche KFZ er vorgemerkt hat.
    Leider bin ich mir hier nicht sicher, ob dies der richtige Weg ist, denn hat die Übersichtsseite drei Aufgaben zu erledigen.
    So würde ich gerne den Vorgang des Schreibens in eine eigene Funktion legen, um diesen ev. auch noch über eine andere Seite aufrufen zu können. Oder aber auch nur ein Hinweis mit Ajax oder JS, daß dieses KFZ vorgemerkt wurde und nicht extra auf die Übersichtsseite verzweigt.
    Ist es möglich auf einer Seite, in diesem Fall KFZ-Details die, ich sage mal, Routine für das schreiben in die DB zu integrieren? Und wenn ja, wie rufe ich die dann genau auf?
    Ich habe hier im Forum schon gelesen, daß man eine externe PHP-Seite einbinden kann. Aber ist dies wirklich dann der richtige Weg? Oder über einen Hook? Was ist das überhaupt genau? So wie ich es verstanden habe, sind das vordefinierte Funktionen?
    Ich habe schon gute Kenntnisse in PHP, nur eben mit den Klassen habe ich leider meine Probleme. Damit kenne ich mich so gut wie nicht aus.
    Ein entsprechendes BE-Modul habe ich mir schon erstellt um die KFZ zu verwalten. Irgendwie ist es da alles ein wenig einfacher, denn dort kann ich jedem Button Funktionen hinzufügen.

    Noch eine Frage: Kann man Seiten aufrufen, einbinden, die nicht in der Seitenstruktur im BE angelegt wurden?
    Napalm

  2. #2
    Contao-Nutzer Avatar von SharkeyO
    Registriert seit
    14.07.2009.
    Ort
    Unterbarmen, Wuppertal, NRW, GER
    Beiträge
    88

    Standard

    Hallo Napalm,

    Ich versuch dir mal ein wenig zu helfen:

    Zitat Zitat von Napalm Beitrag anzeigen
    Ich habe eine FE-Seite (KFZ-Details), auf der ein Besucher ein KFZ vormerken kann. Dazu klickt er auf einen normalen Button und ein entsprechender Eintrag wird in eine DB-Tabelle geschrieben. In protected function compile() hole ich dieses KFZ aus der Datenbank und im dazugehörigen Template übergebe ich die Daten mit Hidden-Felder auf eine andere Seite (Übersicht), die einen entsprechenden Hinweis zeigt und die Daten auch in die DB (andere Tabelle) schreibt. Zusätzlich dient diese Seite auch als allgemeine Übersicht, so daß der Besucher auch sehen kann, welche KFZ er vorgemerkt hat.
    Leider bin ich mir hier nicht sicher, ob dies der richtige Weg ist, denn hat die Übersichtsseite drei Aufgaben zu erledigen.
    So würde ich gerne den Vorgang des Schreibens in eine eigene Funktion legen, um diesen ev. auch noch über eine andere Seite aufrufen zu können. Oder aber auch nur ein Hinweis mit Ajax oder JS, daß dieses KFZ vorgemerkt wurde und nicht extra auf die Übersichtsseite verzweigt.
    Ist es möglich auf einer Seite, in diesem Fall KFZ-Details die, ich sage mal, Routine für das schreiben in die DB zu integrieren? Und wenn ja, wie rufe ich die dann genau auf?
    Im Prinzip kannst du jedem Modul eine Routine mitgeben, die bei Aufruf Werte auswertet. Das wäre dann z.B. sinnvoll, wenn du ein Formular auf ein und der selben Seite aufrufen und verarbeiten möchtest, oder wie in deinem Fall ein Button eine Funktion aufrufen soll. Von AJAX und JS würde ich dir hier abraten, wenn du nicht wirklich firm in diesen Konstrukten/Sprachen bist.

    Üblcherweise macht man es so, dass per GET oder POST Daten an die selbe Seite weitergegeben werden (z.B. <form action="{{env::request}}" method="get">) und diese wertest du dann im Modul aus, sollten die Daten vorliegen. Ein Beispiel:

    PHP-Code:
    private function auswerten($paramter)
    {
      
    $this->Database->execute('...DEINE SQL-QUERY MIT $parameter...')


    protected function 
    compile()
    {
       if(
    $this->input->get('parameter'))  // wenn parameter vorhanden
       
    {
          
    $this->auswerten($this->input->get('parameter'));
       }

    Zitat Zitat von Napalm Beitrag anzeigen
    Ich habe schon gute Kenntnisse in PHP, nur eben mit den Klassen habe ich leider meine Probleme. Damit kenne ich mich so gut wie nicht aus. Ein entsprechendes BE-Modul habe ich mir schon erstellt um die KFZ zu verwalten. Irgendwie ist es da alles ein wenig einfacher, denn dort kann ich jedem Button Funktionen hinzufügen.
    OOP ist das Einmaleins der Contao-Programmierung. Du solltest dich mit den Funktionen und Klassen auseinandersetzen, die dir Contao zur Verfügung stellt. Das wird in den aktuellen Contao-Printpublikationen sehr ausführlich behandelt.

    Zitat Zitat von Napalm Beitrag anzeigen
    Noch eine Frage: Kann man Seiten aufrufen, einbinden, die nicht in der Seitenstruktur im BE angelegt wurden?
    Seiten die nicht im BE angelegt wurden sind externe Inhalte. Die bindest du über z.B. redirects oder über iframes (neuerdings Canvas-Frames) in dein Seitenkonzept ein.

    Ich hoffe ich konnte dir ein wenig helfen.

    Viele Grüße
    SharkeyO
    Don't you ever use another CMS.

  3. #3
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Wenn Du mit "eigene Seiten einbinden" das Erweitern des Navigationsmoduls meinst, dann muss ich dich enttäuschen. Das Contao-eigene Modul bietet keine Schnittstelle.

    Allerdings hat Oli mal was gemacht und ich hab das dann verwendet und zusammen mit ihm einige Stunden daran gefeilt.
    Mittlerweile sind auch Beispiele online, wie Du diese Navi dann dynamisch erweitern kannst. Ist halt dann nicht das Contao-Navigationsmodul, aber spielt ja keine Rolle

    http://de.contaowiki.org/Backboneit_navigation
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  4. #4
    Contao-Nutzer
    Registriert seit
    17.10.2011.
    Beiträge
    52

    Standard

    Danke SharkeyO, daß hilft mir durchaus weiter. Aber noch eine Frage allgemein dazu; protected
    heißt ja 'nur für diese Seite' und public heißt dann öffentlich. Richtig? Wenn ja, wie kann ich die 'auswerten'-Funktion noch auf einer anderen Seite verwenden. Muß ich dann diese Seite includen? Oder geht das mit so einem 'speziellen' Eintrag in der dcaconfig.php? Wäre das dann ein Hook? Denn dies verstehe ich noch nicht ganz, komme aber der Sache, solange es mir jedenfalls die Zeit erlaubt, schon näher.

    Und Toflar: Es geht hier nicht um eine Navigation. Mehr um Aktionen auf einer Detail-Seite.
    Napalm

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
  •