it-swarm.com.de

Wie zeige ich den ausgewählten Radiowert in Joomla (3.x) an?

Ich entwickle eine Joomla-Komponente. Ich habe ein Formular erstellt, das eine Radioliste enthält, und zwar in dem XML-Formular, das ich habe:

<field name="testradio" type="radio" default="0" label="Select an option" description="">
<option value="0">Option 0</option>
<option value="1">Option 1</option>
</field>

Ich habe eine Bearbeitungsansicht erstellt, damit ich den Wert von testradio festlegen kann:

<?php $fields = $this->form->getFieldset($group); ?>
    <?php if (count($fields)) : ?>
        <?php foreach ($fields as $field) : ?>
        <div class="control-group">
            <div class="control-label">
                <?php echo $field->label; ?>
            </div>
            <div class="controls">
                <?php echo $field->input; ?>
            </div>
        </div>
        <?php endforeach;?>
        <?php endif;?>

Ich speichere das ausgewählte Optionskästchen in der Datenbank. Jetzt lade ich den Inhalt aus meiner Datenbank, um die Ansicht zu konsultieren.

<?php foreach ($fields as $field) : ?>
<div><?php echo $field->value; ?></div>
<?php endforeach;?>

Es zeigt "0" an (falls ich Option 0 gewählt habe) und ich möchte "Option 0" anzeigen. Gibt es eine Standardmethode zum Anzeigen des Optionstextes anstelle des Optionswertes?

Schließlich habe ich das JFormFieldRadio erweitert und eine Methode hinzugefügt, um diesen Wert zu erhalten.

public function getOptionText($value) {     
    foreach ($this->element->option as $option) {
        $optvalue = (string)$option['value'];
        if ($optvalue === $value)
            return (string)$option;
    }       
    return '';
}
3
titchagcreation

Schließlich habe ich das JFormFieldRadio erweitert und eine Methode hinzugefügt, um diesen Wert zu erhalten.

public function getOptionText($value) {     
    foreach ($this->element->option as $option) {
        $optvalue = (string)$option['value'];
        if ($optvalue === $value)
            return (string)$option;
    }       
    return '';
}
0
titchagcreation

Fügen Sie in Ihrer foreach-Anweisung eine Bedingung hinzu, die Ihr $ field-> input vergleicht und stattdessen ausgibt, was Sie möchten. Beispiel unten:

<?php if(strpos($field->label,'My Radio Group') !== false){?>
    <?php echo 'Option '.$field->value;?>
<?php }else{?>
    <?php echo $field->value;?>
<?php }?>

Wenn Sie dies auf diese Weise tun, wird Ihr Datenwert als "Option 0" an Ihren Controller zurückgesendet. Sie müssen daher die Speichermethode Ihres Controllers überschreiben, um diese "Option" -Zeichenfolge wieder aus dem Wert der übermittelten Funkgruppe zu entfernen .

0
Terry Carter

Ich denke, was Sie falsch gemacht haben, ist das default = "0" in Ihrer XML-Datei. Versuchen Sie stattdessen das Radiofeld in der XML-Datei wie folgt. Nur wenige Felder helfen in XML, das zu bekommen, was Sie wollen.

<field  name="testradio" type="radio" label="Select an option"
    description="" class="btn-group btn-group-yesno">
    <option value="0">Option 0</option>
    <option value="1">Option 1</option>
</field>

Ich bin sicher, wenn Sie das Layout dieses Mal bearbeitet haben, wird automatisch die Option 0 ausgewählt, wenn Sie zuvor 0 ausgewählt haben.

Die Ausgabe im Layout bearbeiten erfolgt

enter image description here

Lass uns das versuchen. Wenn immer noch Probleme auftreten, können Sie diese gerne mitteilen.

0
Nitesh Kesarkar