Tout ce dont vous avez besoin est d'appeler un AJAX
demande d'obtenir les champs nécessaires. Agissez comme ci-dessous :
-
(Je ne connais pas le nom de votre modèle) jetez un œil à votre formulaire et voyez quel est l'
id
de votrepatient_name
champ. Il s'agit généralement demodelname-fieldname
. Je suppose que le nom de votre modèle estPatient
. Donc, l'identifiant depatient_name
seraitpatient-patient_name
. -
Ajoutez une requête ajax (à votre avis).
Le code pour appeler AJAX pourrait ressembler à ceci :
$this->registerJs("$('#patient-patient_name').on('change',function(){
$.ajax({
url: '".yii\helpers\Url::toRoute("controllerName/patient")."',
dataType: 'json',
method: 'GET',
data: {id: $(this).val()},
success: function (data, textStatus, jqXHR) {
$('#patient-city').val(data.city);
$('#patient-state').val(data.state);
},
beforeSend: function (xhr) {
alert('loading!');
},
error: function (jqXHR, textStatus, errorThrown) {
console.log('An error occured!');
alert('Error in ajax request');
}
});
});");
Remarques :
- Modifier le nom du contrôleur dans le code ci-dessus avec le vôtre.
- J'ai supposé que l'identifiant de
city
etstate
les champs ont les identifiants suivants :patient-city
etstate-city
relativement. - patiente est une action dans votre contrôleur
- Vous devrez peut-être supprimer les alertes|journaux et personnaliser le code ci-dessus
-
Je n'ai considéré aucune condition pour le nettoyage du code. Veuillez vous assurer que les données de l'utilisateur sont correctes.
- Enfin, ajoutez le code d'action dans votre contrôleur.
Code action :
public function actionPatient($id){
// you may need to check whether the entered ID is valid or not
$model= \app\models\Patient::findOne(['id'=>$id]);
return \yii\helpers\Json::encode([
'city'=>$model->city,
'state'=>$model->state
]);
}