J'ai un formulaire dans lequel se trouve un champ déroulant. Les options de la liste déroulante sont basées sur la sélection du bouton radio.Définir les options pour la liste déroulante basée sur le bouton radio sélectionner
Bouton Radio
<?php
$list=array("1"=>"Assign to Department","2"=>"Assign to user");
echo $form->field($model, 'option')->radioList($list,
[
'template' => '{input}{label}', // put the label behind
]);
?>
Script
<script>
$('input[type=radio]').click(function(){
var Flag=this.value;
if(Flag=='1') {
'<?php $items= ArrayHelper::map($company->Users, 'id', 'fullname');?>';
} else if(Flag=='2') {
'<?php $items= ArrayHelper::map(Department::find()->all(), 'dep_id', 'name'); ?>';
}
alert(Flag);
});
</script>
Drodown
<?php
echo $form->field($model, 'assignee')
->dropDownList(
$items, // Flat array ('id'=>'label')
['prompt'=>''] // options
)->label('');
?>
Réponse attendue est le changement des valeurs d'option selon le menu déroulant selection.But il ne change pas même bien que la valeur de l'indicateur soit différente pour les boutons radio et les modifications au clic.
Des idées?
Et que le code PHP est working.I hav'nt défini les articles $ partout dans ma page autre que dans le script.Still Je ne t obtenir une erreur. –
Oui, mon mauvais. Ce code va certainement fonctionner. Seulement, la variable PHP '$ items' sera définie au chargement de la page et la liste déroulante obtiendra le tableau initial. –
Juste une idée - vous pouvez créer 2 tableaux javascript séparés et les définir à partir du tableau PHP. Créez une fonction javascript commune, dans la fonction onclick, passez le bouton radio sélectionné à la fonction commune. Cette fonction commune peut définir les options dans la liste déroulante en conséquence. –