+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Viele Parameter in einem (sql-)Textfeld

  1. #1
    Neu an Board
    Registriert seit
    10.04.2008
    Ort
    Germany-NRW-52511
    Alter
    36
    Beiträge
    48
    Bedankte sich
    7
    Erhielt 7 Danksagungen
    in 6 Beiträgen

    Frage Viele Parameter in einem (sql-)Textfeld

    Hallo zusammen,
    ich entwickle injooosm [1] und habe ein Problem mit immer größer werdender Parameteranzahl (derzeit pro Parameter ein Tabellenindex).
    Nun habe ich in der User-db (jos_users -> params) gesehen, dass in einem Textfeld mehrere Parameter untereinander im Klartext gespeichert sind:

    {
    admin_language=de-DE
    language=de-DE
    editor=tinymce
    helpsite=
    timezone=1
    }

    Ich habe es nicht geschafft die Joomla-lib zu zerpflücken. Gibt es vielleicht Codeschnippsel dafür, oder eine einfache Erklärung?

    Danke schonmal, Chris.........

    [1] https://sourceforge.net/projects/injooosm/

  2. #2
    Gehört zum Inventar Avatar von blaulichttreff
    Registriert seit
    30.04.2007
    Ort
    Heidenrod
    Beiträge
    7.703
    Bedankte sich
    134
    Erhielt 2.557 Danksagungen
    in 2.421 Beiträgen
    Gruß Sascha
    Viele kennen Google, aber nur wenige scheinen es zu nutzen Problem gelöst? | Joomla FAQ
    FF Springen

  3. #3
    Neu an Board
    Registriert seit
    10.04.2008
    Ort
    Germany-NRW-52511
    Alter
    36
    Beiträge
    48
    Bedankte sich
    7
    Erhielt 7 Danksagungen
    in 6 Beiträgen

    Standard

    Nein, da in diesem Beispiel in der xml gespeichert wird. Ich hätte es aber gerne in der Datenbank.

    Danke trotzdem für den Link, stöber gerade im wiki.

    Chris......

  4. #4
    Neu an Board
    Registriert seit
    10.04.2008
    Ort
    Germany-NRW-52511
    Alter
    36
    Beiträge
    48
    Bedankte sich
    7
    Erhielt 7 Danksagungen
    in 6 Beiträgen

    Standard

    Achso, habe ich das richtig verstanden, dass bei der Installation der Komponente die Parameter aus der xml-Datei in die Datenbank gespeichert werden und über das Backend geändert werden können?
    Dann ist es ja doch gar nicht so schlecht.

  5. #5
    Gehört zum Inventar Avatar von blaulichttreff
    Registriert seit
    30.04.2007
    Ort
    Heidenrod
    Beiträge
    7.703
    Bedankte sich
    134
    Erhielt 2.557 Danksagungen
    in 2.421 Beiträgen

    Standard

    jep, siehe abschnitt speichern der parameter in meinem link
    Gruß Sascha
    Viele kennen Google, aber nur wenige scheinen es zu nutzen Problem gelöst? | Joomla FAQ
    FF Springen

  6. #6
    War schon öfter hier
    Registriert seit
    23.09.2009
    Beiträge
    235
    Bedankte sich
    0
    Erhielt 62 Danksagungen
    in 59 Beiträgen

    Standard

    Funktioniert so nur wenn die Parameter Elemente für sich eine Tabellenspalte nutzen und die übergebenen Daten ein Array oder ein Objekt sind, wie zum Beispiel:
    Code:
    Array('id' => 42, 'title' => 'title', 'published' => 1);
    id | title | published | ...
    da hier die $table->bind(); Methode greifen kann.

    Bei normaler Verwendung von Parametern werden diese allerdings als "Gruppe" gerendert. Man könnte es "Scope" nennen und sollte nicht mit der Gruppe verwechselt werden die über den group="" Switch im Manifest angegeben werden kann.

    Die interne JTable::bind(); Methode weiß nicht wann es sich um Parameter handelt (die als String gespeichert werden müssen) und wann nicht. Hier würde fälschlicherweise versucht werden das Array in die "params" Spalte zu schreiben.

    Abhilfe schafft JRegistry::toString();
    Die Zuweisung / Umwandlung wird oft im Controller vorgenommen, angedacht war / ist dafür allerdings das Überschreiben der bind Methode in einer eigenen JTable Klasse.

    Beispiel:
    PHP-Code:
    function bind($array$ignore '')
    {
        if (
    key_exists'params'$array ) && is_array$array['params'] ))
        {
            
    $registry = new JRegistry();
            
    $registry->loadArray($array['params']);
            
    $array['params'] = $registry->toString();
        }
        return 
    parent::bind($array$ignore);

    Keen observers might say: "Die Parameter werden automatisch gerendert und gespeichert wenn man sie über:
    Code:
    JToolbar::JToolBarHelper::preferences('your_component_xml_file', 'height');
    aufruft."

    Das ist richtig und ziemlich alle Core-Erweiterungen machen es so. Wer sich nun aber die Parameter Liste der Artikel anschaut kann sich vorstellen, dass diese Liste recht lang werden kann und es nur bedingt möglich ist diese optisch besonders anzupassen.
    Ein "gutes" Beispiel ist hier die Ignite Gallery. Bei vielen Parametern tut man gut daran eine eigene View dafür einzuplanen.

    http://docs.joomla.org/Component_parameters
    Tell 'em what they want to hear. That will keep them coming back for more. I 've got some for everyone.

  7. #7
    Neu an Board
    Registriert seit
    10.04.2008
    Ort
    Germany-NRW-52511
    Alter
    36
    Beiträge
    48
    Bedankte sich
    7
    Erhielt 7 Danksagungen
    in 6 Beiträgen

    Standard

    Danke für die ausführliche Beschreibung, aber das meine ich auch nicht.
    Es geht darum:
    Wenn ich ins Backend gehe, in meine Komponente, dann kann ich einstellen,
    welcher Kartenservice genutzt wird (osm, google),
    welche Galery für die Bilder genutzt wird,
    welche Anfahrtsbeschreibung von welchem Dienstanbieter, ...
    All das und noch viel mehr steht in der Tabelle #__osm_config und jedes hat ein eigenes Feld.
    Und das möchte ich nicht mehr, da bei jedem Update wieder irgendwas dazu kommt und das Installscript größer und größer wird, für den Fall der Fälle, dass eine Tabelle fehlt.
    Ich kann ja auch nicht sicherstellen, dass jeder immer schön alle Versionen nach und nach upgradet.

    Deshalb möchte ich eine Tabelle (meinetwegen "params") in der alles steht was ich brauch. Stehts nicht drin, wird aber in einer späteren Version benötigt, kommts einfach hinzu.

    Oder ist mein Gedanke dazu völlig falsch? Der Button "Einstellungen" in der Toolbar ist hier ungeeignet, da die Konfigurationsseite dafür viel zu umfangreich ist, und sicher noch größer werden wird.

    Chris.......

  8. #8
    Hat hier eine Zweitwohnung Avatar von progandy
    Registriert seit
    25.06.2007
    Beiträge
    1.939
    Bedankte sich
    13
    Erhielt 640 Danksagungen
    in 577 Beiträgen

    Standard

    Zitat Zitat von ChristianKnorr Beitrag anzeigen
    Oder ist mein Gedanke dazu völlig falsch? Der Button "Einstellungen" in der Toolbar ist hier ungeeignet, da die Konfigurationsseite dafür viel zu umfangreich ist, und sicher noch größer werden wird.
    Meiner Meinung nach ist "Einstellungen" dafür schon geeignet solange dir das Standardlayout ausreicht.
    Du kannst JParameter ja aber auch später in einer eigenen View befüllen lassen denke ich. Dann musst du nur den ganzen Code, den du per JToolBarHelper::preferences fertig erhälst, selbst schreiben.

    Beziehungsweise musst du auch nicht Params verwenden. die Klasse JRegistry tollte auch reichen (wie von Barnum beschrieben), wenn du alles selbst code möchtest.
    Geändert von progandy (22.09.2010 um 15:01 Uhr)
    Suche und FAQ helfen bei Problemen oft weiter!

  9. #9
    War schon öfter hier
    Registriert seit
    23.09.2009
    Beiträge
    235
    Bedankte sich
    0
    Erhielt 62 Danksagungen
    in 59 Beiträgen

    Standard

    Lies doch bitte erneut was ich geschrieben habe und verknüpfe das mit den Informationen von Blaulichttreff. Meine Beschreibung / Anleitung bezog sich auf den Speichervorgang und sollte Nachteile oder mögliche Fehler aufzeigen.

    Im Idealfall nutzt du die von Joomla! bereitgestellten Parameter Elemente um Schalter, Inputboxen und Auswahlfelder zu erstellen. Die Struktur und Ausgangswerte dieser Felder werden über die / eine XML-Datei festgelegt. Nutzt man hier (oft zum Nachteil) eine Datei mit dem Namen config.xml und den dazugehörigen Toolbar Button, rendert Joomla! alle definierten Parameter in einer View und ermöglicht es die gemachten Einstellungen automatisch speichern zu lassen (#__components | params). Dies reicht in den meisten Fällen aus, aber eben nicht immer - immer seltener, da die Funktionen einer Komponente wachsen und die Möglichkeiten einer benutzerfreundlichen Darstellung recht limitiert sind. Ein weiterer Nachteil bei der Verwendung der Standard XML ist, dass Joomla! diese als Komponenten Parameter in der View bzw. Menüpunkt Erstellung rendert, aber das ist ein anderes Thema.

    Genau hier werden dann all deine Einstellung so wie du es gerne möchtest, und ich denke ich habe dich nicht falsch verstanden, im .ini Format gespeichert.
    key1=value1
    key2=value2
    Weil nun aber diese Liste einfach zu lang und übersichtlich werden kann, oder wie auch bei dir, sich die Anzahl der Parameter ändert, sollte man bei einer Umfangreichen Konfigurationsseite eine eigenständige View mit einplanen und hier alle Einstellungen / Parameter rendern. Der Speicherort dieser Informationen ist dann nebensächlich. Du kannst weiterhin eine Tabelle dafür verwenden oder die Parameter im Feld "params" der Tabelle #__components speichern, was den Vorteil hätte später mit: JComponentHelper::getParams(); schnell innerhalb deiner Komponente darauf zugreifen zu können.

    Zusammenfassung: Folge den Links und versuche nachzuvollziehen welche Möglichkeiten das Framework bereitstellt. Im Grunde läuft es darauf hinaus, dass du deine Parameter vor oder kurz nach der Übergabe an JTable mit der Methode bind(); kurz aufbereiten musst damit die Einstellungen wie gewünscht in einem Feld im .ini Format gespeichert werden.
    Geändert von Barnum (22.09.2010 um 15:21 Uhr)
    Tell 'em what they want to hear. That will keep them coming back for more. I 've got some for everyone.

  10. #10
    Neu an Board
    Registriert seit
    10.04.2008
    Ort
    Germany-NRW-52511
    Alter
    36
    Beiträge
    48
    Bedankte sich
    7
    Erhielt 7 Danksagungen
    in 6 Beiträgen

    Standard

    Ich erprobe gerade die config.xml, wobei ich jetzt auf das Problem stoße, dass ich den lesbaren Inhalt nicht übersetzt bekomme.
    Kann ich das nicht durch JText rendern lassen?

    Chris......

+ Antworten
Seite 1 von 2 1 2 LetzteLetzte

Lesezeichen

Berechtigungen

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