Ankündigung

Einklappen
Keine Ankündigung bisher.

Elterntabelle 'Kurse' und Kindtabelle 'Termine' - wie setze ich es um?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Elterntabelle 'Kurse' und Kindtabelle 'Termine' - wie setze ich es um?

    Hi.
    Ich habe mittlerweile viel 'rumgedoktort', habe aber leider einen Punkt meiner Ahnungslosigkeit erreicht, wo ich nur noch Bahnhof verstehe.

    Folgendes möchte ich umsetzen: (Ob es der richtige Weg ist, sei noch dahingestellt)

    Was soll passieren? Ich möchte auf einer CC Listenseite einen Kurs wählen. Gelange ich dann auf die entsprechende Detailseite, werden mit dort Termine angezeigt (bestenfalls als selectfeld in einem Formular). Diese Termine sind für jeden Kurs unterschiedlich.

    Mein Ansatz:
    Ich habe zwei Listen erstellt und als Eltern-Kind-Tabelle bezeichnet. Also Liste 1 heisst 'Kurse' und ist das Elternelement, Liste 2 heisst 'Termine' und ist das Kindelement.
    Allerdings hört es dann auch schon auf. Out of the Box scheint dieser Plan nicht umsetzbar, richtig?
    Oder muss ich noch mehr Listen erstellen, speziell für die Termine?
    Wie gelangen diese in das Formular bzw. auf die Detailseite des Elternelements?

    Der Kopf raucht ... hoffe es hat jemand gute Ideen

    -------------------------
    Kevin


  • #2
    Grundansatz war schon mal richtig ;-)

    Wenn du dir die Eltern-Liste im Backend anschaust, kannst du anschließend ein neues Element (Kind-Datensatz, Termin) erstellen.

    Auf der Leser-Seite der Kurse fügst du ein Listenmodul aus der Termine-Tabelle hinzu -> die Zuordnung erfolgt per Insert-Tag in der SQL-Abfrage im Listenmodul
    pid={{customcatalog::MY-PARENT-TABLENAME::autoitem::id}}

    Kommentar


    • #3
      Eltern-Kind-Listen versteht der CC sogar ohne zusätzliche Filterung. (die Händlerverzeichnis-Demo macht dies auch vor)
      Schaut man sich die Ausgabe der customcatalog_default Templates an für einen CC mit Kindtabelle, entsteht bei einer Liste zu jedem Eintrag ein "Weiterlesen" Link -> Detaileintrag und ein "Weitere Einträge" Link. Dieser Link hat zwei GET parameter: pid und table -> darauf reagieren die CC Listenmodule automatisch.
      Platziert man nun auf der Weiterleitungsseite eine CC Liste der Kind-Tabelle/Definition, wird diese automatisch nur die entsprechenden Kind-Einträge anzeigen.

      Siehe hier: http://cc.premium-contao-themes.com/...sterreich.html

      Das ist quasi der Link von Land Österreich zur Kindtabelle der "Bundeslaender". table=cc_bundesland&pid=oesterreich -> CC unterstützt hier IDs sowie Alias -> in diesem Fall ist der Alias des Eintrags "oesterreich"
      So einen Link kann man überall auch selbst erstellen. Hauptsache pid und table sind gesetzt und auf der Seite ist eine passende Liste.
      ---

      Natürlich ist eine manuelle Filterung nicht verkehrt
      Zuletzt geändert von Tim; 31.01.2018, 15:39.
      http://www.premium-contao-themes.com

      Kommentar


      • #4
        Puuh. Vielen Dank. Das steuert mich in die richtige Richtung.
        Bevor ich jetzt versuche diesen Lösungsansatz komplett umzusetzen, noch fix zwei Fragen.

        Gibt es überhaupt eine Möglichkeit, die auf der Leserseite angezeigten Termine in ein Formular zu 'quetschen'?
        Also ich gelange auf Kursseite xy und bekomme dann die Termine angezeigt. Wobei, nur angezeigt mir nicht soooo viel bringt. Der Kunde sollte ja für die Anmeldung über das Formular, Termine wählen können. UND ... wir benötigen den gewählten Termin ja ebenfalls.

        Die zweite Frage ist bestimmt zum schmunzeln, aber ... ich bekomme es nicht hin, die Datum-Werte aus der Tabelle wieder zu übersetzen. Also wieder in ein Datum-Format zu bringen. Muss der Wert schon anders an die Tabelle übergeben werden?

        (Wahrscheinlich waren dies nicht meine letzten beiden Fragen

        Kommentar


        • #5
          Du musst gedanklich trennen. CC ist CC und Formular ist Formular. Wenn du nicht gerade das Formular händisch im CC Template erstellst, kennen sich beide erstmal überhaupt nicht.
          Mit Inserttags geht bereits eine Menge, aber das sind reine Wertübertragungen. Du brauchst hier quasi ein Select-Feld im Formular, das sich dynamisch aus den Informationen des jeweiligen Detaileintrags befüllt.

          Selbst mit einschlägigen Erweiterungen wie der EFG Erweiterung, die Datenbank-Selects für Fomulare erlaubt, wird das nicht einfach. Damit bekommst du alle Einträge, aber nicht runtergebrochen auf den jeweiligen Detaileintrag.

          Ich sehe hier zwei Lösungen:
          1. Ein eigenes Template für das Select-Feld und damit das Feld dynamisch füttern
          2. parseWidget Hook nutzen und damit das Select-Feld dynamisch füttern


          http://www.premium-contao-themes.com

          Kommentar


          • #6
            Im Backend habe ich ja den Attributtyp 'Auswahl-Datenbank, einfach (Select/Radio)'. Dort wähle ich die entsprechende Tabelle und kann auch eine Bedingung hinzufügen.

            Meine Idee: Ich nutze den Inhalt dieses Backend Templates für mein Frontend. Bin ich dann nicht schon sehr viel weiter? Ich finde nur gerade nicht raus, in welchem be_template dieses select-Feld ist.

            Vielleicht ist auch mein Vorgehen allgemein falsch? Ich habe es mir etwas einfacher vorgestellt. Ich möchte nicht auf den CC verzichten, hätte es aber bestimmt einfacher wenn ich das alles über Events und Eventkalender abwickeln würde. Oder ist dort meine Baustelle und ich nutze den CC für die Sortierung/Suche im Eventkalender?

            Kommentar


            • #7
              Egal welche Quelle du hast, CC oder Events oder anders, wie willst du diese Daten in ein Formular aus dem Formulargenerator bekommen? Dort soll der Benutzer doch auswählen, oder nicht und da liegt der Hase im Pfeffer
              http://www.premium-contao-themes.com

              Kommentar


              • #8
                Sooo....
                Ich mache es jetzt (erstmal) ganz anders. Ich lege für jeden Termin einen Kurs an. Habe dann evtl. einen Kurs 8x in der Ansicht, kann aber über die Suche, die Termine eingrenzen UND ich kann das 'arrival' bzw. Startdatum in mein Formular übergeben. Allerdings habe ich noch immer keine Lösung für die Datum-Formatierung.
                Wenn ich in meinem Form-Feld folgendes eingebe, erhalte ich natürlich nur die Zahlen aus der Tabelle (also Startdatum:1458518400)
                HTML-Code:
                {{customcatalog::cc_accommodations::autoitem::arrival}}
                Wo entkryptisiere ich das denn ... im Inserttag ja nicht.

                Kommentar


                • #9
                  Zitat von suparaschi Beitrag anzeigen
                  Sooo....
                  Wo entkryptisiere ich das denn ... im Inserttag ja nicht.
                  z.B. im Template des Formularfeldes mit Contaos parseDate() Funktion.
                  http://www.premium-contao-themes.com

                  Kommentar


                  • #10
                    parseDate auf mein Tabellenfeld 'arrival' bekomme ich leider nicht zum laufen.

                    Aber, kaum zurück auf der CC Liste Seite, ein neues Problem. Ich habe meine Suche (Filter) und möchte einfach beim Datepicker das Datum eingrenzen. Also z.B. den 06.06.2018. Gedanklich soll er mir dann alle passenden Kurse die (so eingestellt) größer als sind, anzeigen.
                    Leider haut er mir da diese Fehlermeldung raus, das an irgendeiner Stelle die Datum-Formatierung nicht passt, raus
                    Code:
                    app.CRITICAL: An exception occurred. {"exception":"[object] (OutOfBoundsException(code: 0): Invalid date \"2018-02-06\" at vendor/contao/core-bundle/src/Resources/contao/library/Contao/Date.php:438)"} []

                    Kommentar


                    • #11
                      Was für ein Datepicker? Ein Datums-/Zeitstempel Attribut? -> die speichern als Unix-Zeitstempel, das verstehen die Datums-Filter, als auch direkte SQL Abfragen ala timestamp >= UNIX_TIMESTAMP()
                      http://www.premium-contao-themes.com

                      Kommentar


                      • #12
                        Morgen.

                        Ich hab noch eine Idee ... von der Art her habe ich es hier gelesen http://forum.premium-contao-themes.c...C3%BCbertragen

                        Es gibt die Detailseite (Kurs) auf der sich auch die Liste mit den Terminen befindet.
                        Kann ich diesen Terminen einen Link 'verpassen', der auf eine weitere Seite führt und dort per Inserttag die Daten der Detailseite (Kursname und Co) Aber auch das ausgewählte Kind-Elemet (Termine/Datum) ausgibt? Muss ich weiter verschachteln?

                        Was ich bei meiner jetzigen Umsetzung (jeder Termin hat auch eine eigene Kursseite) doof ist, die Url ist ja nur einmal 'einmalig', danach kopiere ich ja den Kurs und er hängt nich ID´s hinten dran. Darum suche ich noch elegantere Lösungen.

                        Kommentar


                        • #13
                          Du kannst doch urls manipulieren wie du willst. Häng einfach als GET Parameter an, was du willst.
                          ---
                          Ich denke das Projekt ist an dieser Stelle verplant - viel zu kompliziert alles gedacht.

                          Dies hier ist der springende Punkt:
                          Gibt es überhaupt eine Möglichkeit, die auf der Leserseite angezeigten Termine in ein Formular zu 'quetschen'?
                          -> Antwort: Natürlich, ABER hier hast du keine andere Chance als sich mit den Templates eines Select-Feldes auseinander zu setzen und dort über Datenbank-Abfragen die Informationen zu holen, die du brauchst. (mal von Contao Hooks abgesehen).

                          Eigentlich ist bereits alles gesagt: http://forum.premium-contao-themes.c...0120#post10120

                          Du musst hier in gewissen Rahmen PHP programmieren können, sonst wird das schlichtweg nicht möglich sein oder nur oberflächlich gut. Es wird nicht mit Inserttags allein umsetzbar sein, egal welcher Art deine Datenquellen sind. Du wirst auch nicht Terminauswahlen aus Kalenderdaten einfach in ein Select-Feld des Formulargenerators bekommen. Es wird immer eine Individuallösung!
                          http://www.premium-contao-themes.com

                          Kommentar


                          • #14
                            Ich frage mich an dieser Stelle, wie der CC hier für die Basis Seminarverwaltung zweckmäßig ist.
                            Ich habe eine relativ umfangreiche Kursverwaltung für eine Klinik im Aufbau.
                            Grundlage sind Contao Events mit der Extended Erweiterung zuzüglich Notification Center im Einsatz.
                            Auf jeder Details-Seite ist das entsprechende Anmeldeformular, das denn CC füllt inkl. An- und Abmeldelink.
                            Das heißt die ganze Seminarpflege und verwaltung läuft über Events und der CC enthält lediglich die Teilnehmerlisten.
                            Gerne mal mehr über PN.

                            Kommentar

                            Lädt...
                            X