+ Antworten
Ergebnis 1 bis 9 von 9

Thema: Wie bekomme ich Stadtname im value = JHtml::_('select.options')

  1. #1
    Neu an Board
    Registriert seit
    07.02.2008
    Beiträge
    37
    Bedankte sich
    4
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard Wie bekomme ich Stadtname im value = JHtml::_('select.options')

    Hi, ich habe folgendes problem.
    In habe im Fronend ein Formular wo unter anderem eine Auswahl liste mit 20 Städten ist.
    Funzt alles super. Um meine anwendung fehlerfrei zu kriegen muss in code der "value" der auswählbare Stadtname stehen,
    aber "select.options" legt dort ein automatisches Zahlen index an. wie kann ich das ändern werde aus der API erklärung nicht schlau.

    Screen der auswahlliste:


    So sieht der Code aus:
    PHP-Code:
    <fieldset>
        <legend>Stadt wählen</legend>
            <select name="staedteliste" class="inputbox" onchange="this.form.submit()">
                <option value="">
                    <?php echo JText::_('Bitte wählen...');?>
                </option>
                <?php echo JHtml::_('select.options'$this->staedteliste'value''text'$stadt); ?>
            </select>
        <button type="submit" name="Senden">Senden</button>
    </fieldset>
    Und hier ein Firebug Screen wo die funktion "select.options" im Value eine Zahl statt den Stadtname legt.
    z.B. <option value="2">Bochum</option> soll aber so aussehen <option value="Bochum">Bochum</option>

    Geändert von GernGesehen (25.01.2014 um 11:25 Uhr)
    Joomla 2.5.28 de stable

  2. #2
    Neu an Board Avatar von juzzti
    Registriert seit
    09.08.2008
    Ort
    Moormerland-Veenhusen
    Alter
    46
    Beiträge
    8
    Bedankte sich
    0
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    Ich weiß es jetzt nicht ganz genau, aber ich würde es mal so probieren :

    PHP-Code:
    <fieldset>
        <legend>Stadt wählen</legend>
            <select name="staedteliste" class="inputbox" onchange="this.form.submit()">
                <option value="">
                    <?php echo JText::_('Bitte wählen...');?>
                </option>
                <?php echo JHtml::_('select.options'$this->staedteliste'text''text'$stadt); ?>
            </select>
        <button type="submit" name="Senden">Senden</button>
    </fieldset>

  3. #3
    Gehört zum Inventar
    Registriert seit
    17.09.2008
    Ort
    München
    Beiträge
    7.848
    Bedankte sich
    761
    Erhielt 2.545 Danksagungen
    in 2.210 Beiträgen

    Standard

    @juzzti: Ich hoffe, dass du es bei deinen Komponenten besser wusstest

    @GernGesehen: Schau nach, wo $this->staedteliste erzeugt wird. Das kann aus einer Datenbanktabelle kommen oder es kann eine Methode sein, welche die Liste der Optionen direkt aufbaut oder in der xml-Datei in models/forms stehen.
    Geändert von firstlady (25.01.2014 um 08:50 Uhr)

  4. #4
    Neu an Board Avatar von juzzti
    Registriert seit
    09.08.2008
    Ort
    Moormerland-Veenhusen
    Alter
    46
    Beiträge
    8
    Bedankte sich
    0
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    naja, ich habe es wenigsten bei mir so gelöst.
    z.b. beim Filtern der Berichte nach Organisationen :

    PHP-Code:
        echo JHTML::_('select.genericlist',  $organisationen'selectedOrga'' onchange=submit(); ''name''name'$this->selectedOrga); 
    Damit habe ich den Namen der Organisation auch als Value.
    Sicherlich ist es vielleicht nicht ganz richtig gelöst, aber es funktioniert.

  5. #5
    Gehört zum Inventar
    Registriert seit
    17.09.2008
    Ort
    München
    Beiträge
    7.848
    Bedankte sich
    761
    Erhielt 2.545 Danksagungen
    in 2.210 Beiträgen

    Standard

    Du hast recht damit, dass viele Wege nach Rom führen. Ich meinte damit, man sollte wissen, was warum und wie funktioniert. Du kannst einfach im Code nachsehen, was beim Erzeugen einer generic.list passiert.

    Code:
    	
    public static function genericlist($data, 
    $name, 
    $attribs = null, 
    $optKey = 'value', 
    $optText = 'text', 
    $selected = null,
    $idtag = false,
    $translate = false)
    den Rest lass ich dir zum Nachschauen

  6. #6
    Neu an Board
    Registriert seit
    07.02.2008
    Beiträge
    37
    Bedankte sich
    4
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    Nee hab es noch sehr einfach gehalten, bei mir wird es im Model vorbereitet:


    und von der view nur abgeholt und an das Template geschickt:


    Ja sowas hab ich mir schon gedacht das ich das array() im Model bearbeiten muss, ich dachte nur das es eventuell einfacher geht
    und select.option im code nur eine andere schreibweise benötigt um zu funktionieren.

    @juzzti mit JHTML::_('select.genericlist') funktioniert es komischerweise auch nicht, gleicher efekt, bei value ein Zahlenindex. Es ergibt sich daraus sogar ein nachteil für mich, ich habe kein default wert mehr an ersteer stelle wo steht "Bitte wählen..." , also für mich völlig unbrauchbar
    Geändert von GernGesehen (25.01.2014 um 10:03 Uhr)
    Joomla 2.5.28 de stable

  7. #7
    Neu an Board
    Registriert seit
    07.02.2008
    Beiträge
    37
    Bedankte sich
    4
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    Ach man, ich wollte doch nur mal mit euch reden, weil ich wusste es fällt mir dann leichter auf die lösung zu kommen.
    Habe das ganze in eine loadObjectList() verändert und ein foreach rein gehauen und siehe da, problem gelöst.

    Lösung sieht wie folgt aus:
    PHP-Code:
    function getStaedte(){

            
    $staedte = array();
            
    $db JFactory::getDbo();
            
    $query $db->getQuery(true);

            
    $query->select('s.id, s.name');
            
    $query->from('#__rezepte_staedte AS s');
            
    $query->order('s.name');

            
    $db->setQuery($query);
            
    $items $db->loadObjectList();

            foreach (
    $items as $item)
            {
                
    $staedte[$item->name] = $item->name;
            }

            return 
    $staedte;
        } 
    ErgebnisPic:
    Joomla 2.5.28 de stable

  8. Erhielt Danksagungen von:


  9. #8
    Wohnt hier Avatar von addi
    Registriert seit
    29.11.2005
    Ort
    Berlin
    Beiträge
    2.187
    Bedankte sich
    21
    Erhielt 456 Danksagungen
    in 439 Beiträgen

    Standard

    Die values werden nicht automatische Zahlen sein sondern den ids entsprechen. Es müsste daher noch simpler gehen, wenn du die id nicht brauchst, führst du einfach den Select zwei mal auf name aus und sparst die foreach-Schleife.

    $query->select('s.name, s.name');
    Auch für Foren gilt: Das Leben verlangt mutige Entscheidungen. Wer zu spät kommt, den bestraft das Leben.

    Kein Support per PM. Keine Antwort auf Fragen, die mit der Thread-Frage nichts zu tun haben.

  10. #9
    Neu an Board
    Registriert seit
    07.02.2008
    Beiträge
    37
    Bedankte sich
    4
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    Sorry, aber das ist unsinnig, ein $query->select(s.name, s.name) so auszuführen wird zu 100% ein fehler ausführen.
    Das war ein automatischer Zahlen index und nicht die IDs da die $db function loadColumn() diese art array() mit autozahl, z.B. "$meinArray[0]" so wählt, das "s.id" hatte ich da nur vergessen und wurde auch schon entfernt.

    Du verunsicherst damit die Leidensgenossen.
    Joomla 2.5.28 de stable

+ Antworten

Berechtigungen

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