+ Antworten
Ergebnis 1 bis 6 von 6

Thema: XML Datei für Forms

  1. #1
    Kommt häufiger vorbei
    Registriert seit
    14.06.2009
    Ort
    Berlin
    Beiträge
    280
    Bedankte sich
    59
    Erhielt 42 Danksagungen
    in 42 Beiträgen

    Standard XML Datei für Forms

    Hi,

    beim Versuch die Registrierung durch ein Plugin zu erweitern bin ich über folgendes Problem gestolper, hoffe jemand kennt Abhilfe:

    mit
    Code:
    <field
    name="test"
    type="file"
    />
    Kann ich im Formular ein Feld zum Hochladen von Dateien einfügen.
    Siehe: http://docs.joomla.org/Standard_form_field_types (file)
    Der Dateiname wird dann auch in der Datenbank gespeichert, aber wo wird die Datei, wenn überhaupt, hochgeladen?
    Und was mich noch interessiert, welche Attribute stehe bei type="file" noch zur Verfügung?
    Ich habe gestern den ganzen Tag damit verbracht in der Richtung was zu finden, aber leider erfolglos.

    Thx
    "Wenn die geistige Sonne niedrig scheint, dann wirft auch ein Zwerg einen langen Schatten" - Rechts LINKS unten befindet sich das "Danke" Button
    http://www.nachdenkseiten.de
    http://islam.de/72.php

  2. #2
    War schon öfter hier Avatar von Tribal6
    Registriert seit
    23.11.2004
    Ort
    Schweiz
    Beiträge
    243
    Bedankte sich
    3
    Erhielt 54 Danksagungen
    in 44 Beiträgen

    Standard

    Hi

    1. Die Antwort auf die Frage nach den Attributen steht im Code, da wo das entsprechende (X)HTML für das Feld generiert wird
    (..libraries/joomla/form/fields/file.php)

    Code:
        protected function getInput()
        {
            // Initialize some field attributes.
            $accept        = $this->element['accept'] ? ' accept="'.(string) $this->element['accept'].'"' : '';
            $size        = $this->element['size'] ? ' size="'.(int) $this->element['size'].'"' : '';
            $class        = $this->element['class'] ? ' class="'.(string) $this->element['class'].'"' : '';
            $disabled    = ((string) $this->element['disabled'] == 'true') ? ' disabled="disabled"' : '';
    
            // Initialize JavaScript field attributes.
            $onchange    = $this->element['onchange'] ? ' onchange="'.(string) $this->element['onchange'].'"' : '';
    
            return '<input type="file" name="'.$this->name.'" id="'.$this->id.'"' .
                    ' value=""' .
                    $accept.$disabled.$class.$size.$onchange.' />';
        }
    accept, size, class, disabled, onchange, name, id. Nebst den anderen Attributen wie label, required, filter, validate, description, message, default (nicht bei Files)

    2. Die Formklasse lädt, rendert, filtert, und validiert Formulare, grob gesagt. Was mit den Daten (und damit auch mit den Files) geschieht, hängt vom restlichen Code ab. Ich nehme mal an, der Weg der da von den Entwicklern angedacht ist, ist der, das in einer eigenen Erweiterung das 'Handling' von JForm-Formularen in einer Model-Klasse stattfindet, die die abstrakte 'JModelForm' Klasse erweitert. Die ist überigens eine von vier neuen (statt bisher nur einer) Model-Klasse. Das upgeloadete File ist wie immer im superglobalen Array '$_FILES' drinne, und da auch der temporäre Speicherort ( http://ch2.php.net/manual/de/features.file-upload.php ). Und 'enctype="multipart/form-data" ' im Form-Tag nicht vergessen

    In der 1.5 machte man solche Dinge ja üblicherweise mit den Klassen JPath, JFolder und JFile. Aber ich hab grad wieder gesehen, das in der 1.6 die Klasse JStream ja neu dazugekommen ist, u.a. mit einer Funktion 'upload' (hab ich mir aber noch nicht näher angeschaut).

    Ich hoffe mal, das hilft dir ein Stück weiter.

    Cheers
    Roger

  3. Erhielt Danksagungen von:


  4. #3
    Kommt häufiger vorbei
    Registriert seit
    14.06.2009
    Ort
    Berlin
    Beiträge
    280
    Bedankte sich
    59
    Erhielt 42 Danksagungen
    in 42 Beiträgen

    Standard

    Hi und danke erstmal, das hilft ein großes Stück.

    Ich weiss eigentlich, dass ich selbst auch im Code gesucht habe, weil mir das bei anderen Problemen welche noch nicht gut dokumentiert sind geholfen hat. Weiss nicht warum ich da nicht fündig geworden bin :/

    Würde mich interessieren, woher du das mit den neuen Klassen kennst? Die neuen Modelklassen sind mir auch durch Code & Google bekannt (auch wenn ich bisher nur JModelForm "verstanden" habe) aber JStream lese ich zum ersten mal.

    Wie auch immer, danke.
    "Wenn die geistige Sonne niedrig scheint, dann wirft auch ein Zwerg einen langen Schatten" - Rechts LINKS unten befindet sich das "Danke" Button
    http://www.nachdenkseiten.de
    http://islam.de/72.php

  5. #4
    Kommt häufiger vorbei
    Registriert seit
    14.06.2009
    Ort
    Berlin
    Beiträge
    280
    Bedankte sich
    59
    Erhielt 42 Danksagungen
    in 42 Beiträgen

    Standard

    Hi nochmals,

    es hat sich eine neue Frage aufgetan die auch mit dem User-Profile-Plugin zu tun hat.

    Und zwar habe ich ein Feld vom Typ checkboxes:
    Code:
    <field
                                    name="select"
                                    type="checkboxes"
                                    class="validate['required']"
                                    description="desc."
                                    label="select"
                                    message="message"
                                   
                            >
                                <option value="telefon">Telefon</option>
                                <option value="mail">E-Mail</option>
                                <option value="profil">Profil</option>
                            </field>
    Das erzeugt 3 Checkboxes welche im array jform[profile][select][] gespeichert werden.

    Das Problem ist nun, dass in der Datenbank in der user_profiles Tabelle der Wert nicht gespeichert wird, da steht nur "Array".

    Wenn ich mich registiert habe und auf Edit Profile gehe, dann sind auch alle Checkboxes nicht ausgewählt, wenn ich eine auswähle und speichere und nochmals auf editieren gehe, sind alle wieder abgewählt.

    Ist das ein Bug ?


    Edit:
    http://joomlacode.org/gf/project/joo..._item_id=20668

    Handelt es sich um diesen Bug hier? Es ist nämlich auch so, dass wenn man das Userprofile im Backend editiert, dass die Ansicht zerschossen ist.

    Habe den Patch von dort installiert, aber leider ohne sichtbare Änderungen. Habe ich etwas falsch gemacht vielleicht? In der google group meinte der der den Bug entdeckt hat dass ihn eine geänderte Datei geholfen hat:
    http://groups.google.com/group/jooml...3bde3213eedf7d
    Geändert von EuerAbi (07.11.2010 um 13:17 Uhr)
    "Wenn die geistige Sonne niedrig scheint, dann wirft auch ein Zwerg einen langen Schatten" - Rechts LINKS unten befindet sich das "Danke" Button
    http://www.nachdenkseiten.de
    http://islam.de/72.php

  6. #5
    Joomla! Core Developer
    Registriert seit
    30.08.2006
    Beiträge
    160
    Bedankte sich
    8
    Erhielt 106 Danksagungen
    in 53 Beiträgen

    Standard

    Das ist kein Bug. Du solltest dir überlegen, was du da willst. Du übergibst dem profile plugin mit deinem code keinen string, sondern ein array an daten. Somit weiss das profile plugin nicht, wie es damit umgehen soll. Im Endeffekt ist das profile plugin aber auch nicht dafür gedacht, das du das modifizierst. Es ist einzig und allein als Beispiel zu verstehen, wie man ein Formular erweitern kann. Die ganze Logik, die da hinter steht, musst du selber basteln. Also mach besser ein neues Plugin und verwende das.

    Um ein Array zu einem String zu wandeln, kann man es z.B. als JSON kodieren.
    Ex-Joomla! Core Developer

    Ich gebe keinen Individualsupport. Mails, PMs, etc. mit Supportanfragen werden ignoriert.

  7. Erhielt Danksagungen von:


  8. #6
    Kommt häufiger vorbei
    Registriert seit
    14.06.2009
    Ort
    Berlin
    Beiträge
    280
    Bedankte sich
    59
    Erhielt 42 Danksagungen
    in 42 Beiträgen

    Standard

    Hi und danke, dein Post hat mir sehr geholfen.

    Ich hatte bereits ein eigenes Plugin erstellt und damit an der Sache gearbeitet, habe nur nicht "verstanden" (auch wenns jetzt so offensichtlich ist) dass das Plugin selbst die Daten speichern muss.

    Sollte ich jetzt den Patch wieder deinstallieren?
    "Wenn die geistige Sonne niedrig scheint, dann wirft auch ein Zwerg einen langen Schatten" - Rechts LINKS unten befindet sich das "Danke" Button
    http://www.nachdenkseiten.de
    http://islam.de/72.php

+ Antworten

Lesezeichen

Berechtigungen

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