Ergebnis 1 bis 10 von 10

Thema: Daten bei Modulinstallation mitinstallieren

  1. #1
    Contao-Nutzer
    Registriert seit
    07.07.2009.
    Beiträge
    30

    Standard Daten bei Modulinstallation mitinstallieren

    Hallo Liebe Gemeinde wieder mal ich.

    Bin jetzt mitten am erstellen einer Erweiterung die ich schon länger plane.

    Mein Problem jetzt is jenes das ich eine Select Box mit Länderauswahl in meiner Erweiterung haben möchte.
    So dieses Select soll seine Daten aus einem DB-Table ziehen, in welchem Länder in kurz, z.B. AUT und Österreich stehen.
    Ist es überhaupt möglich dies über, z.B. die database.sql zu machen oder ob ich ein php Script brauche das beim erstellen der ersten Kategorie/Branche die Daten in den Table schreibt?

    Zum Verständnis die Erweiterung ist so ähnlich aufgebaut wie das Nachrichtenmodul.
    Mann erstellt eine Kategorie und in diese Werden dann Datensätze geschrieben wie beim Nachrichtenmodul.
    Die Datensätze sollen in der 1. Version über eine Liste und einen Reader ausgegeben werden.

    Ist mein Problem lösbar?
    Bzw. welchen Weg soll ich gehn?

    Ich hoffe jemand hat eine Anregung oder Lösung!

    Mfg Wesze

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

    Standard

    Du kannst dem Feld einfach einen foreignKey geben:
    PHP-Code:
    'foreignKey' => 'tabelle.feld' 
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  3. #3
    Contao-Nutzer
    Registriert seit
    07.07.2009.
    Beiträge
    30

    Standard

    ja das kenn ich schon!
    Hab ich im Nachrichtenmodul bei der Gruppenbeschränkung gesehen.
    Nur das Problem ist das ich die Länderliste erst in die DB kriegen muss.
    Damit ich den foreignKey angeben kann, damit er mir Daten liefert.

    Daher die Frage ob das über die database.sql möglich ist.
    Oder eben auf anderem Wege.

    Lg

  4. #4
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.613
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo Wesze,

    ich denke, Du musst im Modul eine Routine haben, die immer nachschaut, ob die Tabelle bereits angelegt ist und sonst die Tabelle erstellt.
    Über die database.sql wird es nicht funktionieren (denke ich), weil diese direkt zum Strukturvergleich herangezogen wird.

    Evtl. gibt es eine RunOnce-Funktion, ich glaube sowas mal beim Update gesehen zu haben. Kannst Dich mal im Core ein wenig umsehen.

  5. #5
    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 kannst eine Datei system/runonce.php mitliefern. Diese Datei wird einmal aufgerufen und dann gelöscht.
    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

  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

    wird wohl überschrieben... die runonce ist ja auch nur ne Notlösung
    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
    07.07.2009.
    Beiträge
    30

    Standard

    @do_while Danke für den Tip. Die Tabelle selbst leg ich ja über die database.sql an. Zumindest die Struktur.

    @andreas.schempp d.h. ich lege in der Ordnerstruktur meiner Erweiterung einen system ordner an in dem die runonce.php liegt und diese wird bei der Installation automatisch aufgerufen. Hab ich das richtig verstanden?
    Und dort schreib ich dann mein sql statement mit dem INSERT rein!
    Geändert von Wesze (02.04.2010 um 08:18 Uhr)

  8. #8
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    Ich habe das wie folgt geloest :
    Es gibt eine ConfigVariable mit einer Version des Moduls (bsp. SampleData4Module). Diese Variable enthaelt die aktuelle Versionsnummer des Moduls. (Kann bei ER Modules aus der tl_repository_installs ausgelesen werden, oder mein NICHT ER Modulen eine eigene Versionierung)

    Auf den Hook prepareBackendOutput setzen, und dort die Url auf typolight/main.php?do=repository_manager&update=database oder auf typolight/install.php testen. Nur wenn dies der Fall ist, braucht die DB getestet werden

    Somit wird nur bei den wirklichen UpdateGeschichten getriggert.

    Man vergleicht also beim Hook AUfruf die ConfigVariable SampleData4Module mit der aktuellen Verisonsnummer und findet so heraus, ob aktuelle Werte gesetzt werden muessen. Danach die URL Kontrolle.
    Nun kann das Modul selbst entscheiden, ob es einen FullRewrite oder Insert machen soll.
    Und das passiert nur, wenn das Modul neu/geupdatet oder veraendert wurde.

    Danach noch die ConfigVariable SampleData4Module auf die aktuelle Version setzen, und fertig.

    Will man nun die Daten resetten, einfach den Wert der ConfigVariable veraendern oder mittels Widget in den Settings resetten.
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  9. #9
    Contao-Nutzer
    Registriert seit
    07.07.2009.
    Beiträge
    30

    Standard

    @lindesbs
    Ok so damit ichs versteh! Vl. versteh ich wieder mal was falsch.
    In der config.php erstelle ich diese Variable, welche die Länderdaten enthält und die aktuelle Vers. Nr.
    Danach zieh ich mir ausn ER die updatende Vers. Nr. und Checke ob die Daten im db-table geupdatet werden müssen. jetz müsste ich jedoch im countries table die Versionsnummer zusätzlich hinterlegen um einen vergleich machen zu können.
    Und bei der 1. Installation einfach die Daten via runonce.php rein schreiben.

    Ich hoffe ich hab da jetzt nicht einen kompletten Blödsinn geschrieben.gg
    War eine lange nacht und bin noch net so am dampfer!gg

  10. #10
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    Du musst in der installierten Version einen "Zustand" speichern. Also einen Zustand, wie der aktuelle Datenbestand ist. Dies kannst du durch regelmaessige Kontrolle der DB machen, oder gezielt.
    Ich bevorzuge eine gezielte Kontrolle.

    Durch nutzen eines eindeutigen Tokens (und dies ist bei installierten Anwendungen die version in der entsprechenden tl_repository_installs) kannst du deine SampleDaten kontrollieren.

    Mittles $GLOBALS['TL_CONFIG']['MEINMODUL'] kannst du den Token abfragen, welcher in der localconfig.php abgelegt ist.
    Neue Werte hinterlegst Du mit
    $this->Config->update("\$GLOBALS['TL_CONFIG']['MEINMODUL']", 16);

    SOmit wuerde nun die Kontrollvariable die 16 in der localconfig.php haben.

    Damit nicht permanent kontrolliert wird, muss man natuerlich noch auf die Moeglichkeiten der DB triggern. Hierzu einfach der Hook der auf die entspr. URL greift.
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

Aktive Benutzer

Aktive Benutzer

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

Ähnliche Themen

  1. Frage, Aktion:"Reparieren" bei Modulinstallation
    Von Arti im Forum Sonstiges zu Contao
    Antworten: 1
    Letzter Beitrag: 06.01.2011, 06:39
  2. Modulinstallation
    Von Papaschlumpf im Forum Sonstige Erweiterungen
    Antworten: 14
    Letzter Beitrag: 26.11.2010, 17:59
  3. Antworten: 0
    Letzter Beitrag: 13.01.2010, 03:01

Lesezeichen

Lesezeichen

Berechtigungen

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