web-dev-qa-db-fra.com

Comment afficher la valeur radio sélectionnée dans Joomla (3.x)?

Je développe un composant Joomla. J'ai créé un formulaire qui contient une liste de radio, donc dans le formulaire XML, j'ai:

<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>

J'ai créé une vue d'édition pour pouvoir définir la valeur de testradio:

<?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;?>

Je sauvegarde la case à cocher de la radio sélectionnée dans la base de données. Maintenant, je charge le contenu de ma base de données pour consulter la vue.

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

Il affiche "0" (dans le cas où j'ai choisi l'option 0) et j'aimerais afficher "Option 0". Existe-t-il un moyen standard d’afficher le texte de l’option au lieu de sa valeur?

Enfin, j'ai étendu JFormFieldRadio et ajouté une méthode pour obtenir cette valeur.

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

Enfin, j'ai étendu JFormFieldRadio et ajouté une méthode pour obtenir cette valeur.

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

Dans votre déclaration foreach, ajoutez une condition qui vérifie votre entrée $ field-> et affiche ce que vous voulez à la place. Exemple ci-dessous:

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

Comprenez simplement que si vous procédez ainsi, votre valeur de données sera renvoyée à votre contrôleur en tant qu '"option 0". Vous devrez donc remplacer la méthode de sauvegarde de votre contrôleur pour supprimer cette chaîne "Option" de la valeur de groupe de radio publiée. .

0
Terry Carter

Je pense que ce que vous avez mal fait est que default = "0" dans votre fichier xml. Au lieu de cela, vous essayez le champ radio dans le fichier XML comme ci-dessous. Peu de champs permettent au xml d’obtenir ce que vous voulez.

<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>

Je suis sûr que lorsque vous aurez modifié la mise en page, vous obtiendrez automatiquement l'option 0 si vous avez choisi 0 précédemment.

La sortie dans Edit Layout sera

enter image description here

Essayons ça. Si toujours aucun problème, n'hésitez pas à le dire.

0
Nitesh Kesarkar