Tutto ciò di cui hai bisogno è chiamare un AJAX
richiesta per ottenere i campi necessari. Basta agire come di seguito:
-
(Non conosco il nome del tuo modello) dai un'occhiata al tuo modulo e guarda qual è l'
id
del tuopatient_name
campo. Di solito èmodelname-fieldname
. Presumo che il nome del tuo modello siaPatient
. Quindi, l'id dipatient_name
sarebbepatient-patient_name
. -
Aggiungi una richiesta ajax (nella tua vista).
Il codice per chiamare AJAX potrebbe essere simile al seguente:
$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');
}
});
});");
Note:
- Cambia il Nome del controller nel codice sopra con il tuo.
- Ho assunto che l'id di
city
estate
campi ha i seguenti ID:patient-city
estate-city
relativamente. - paziente è un'azione nel tuo controller
- Potrebbe essere necessario rimuovere gli avvisi|registri e apportare alcune personalizzazioni al codice sopra
-
Non ho considerato alcuna condizione per la pulizia del codice. Assicurati che i dati utente siano corretti.
- Infine, aggiungi il codice azione nel tuo controller.
Codice azione:
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
]);
}