Vše, co potřebujete, je zavolat AJAX
žádost o získání potřebných polí. Postupujte takto:
-
(Neznám název vašeho modelu) podívejte se na svůj formulář a zjistěte, jaké je
id
vašehopatient_name
pole. Obvykle je tomodelname-fieldname
. Předpokládám, že název vašeho modelu jePatient
. Takže idpatient_name
by bylopatient_name
. -
Přidejte požadavek ajax (podle vašeho názoru).
Kód pro volání AJAX by mohl vypadat následovně:
$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');
}
});
});");
Poznámky:
- Změňte ControllerName ve výše uvedeném kódu s vaším vlastním.
- Předpokládám, že id
city
astate
pole má následující id:patient-city
astate-city
poměrně. - pacient je akce ve vašem ovladači
- Možná budete muset odstranit záznamy|protokoly a provést určité úpravy výše uvedeného kódu
-
Nezvažoval jsem žádné podmínky pro čištění kódu. Ujistěte se prosím, že uživatelská data jsou správná.
- Nakonec do ovladače přidejte kód akce.
Kód akce:
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
]);
}