Всичко, от което се нуждаете, е да извикате AJAX
заявка за получаване на необходимите полета. Просто действайте както следва:
-
(Не знам името на вашия модел) погледнете формуляра си и вижте какъв е
id
на вашияpatient_name
поле. Обикновено еmodelname-fieldname
. Предполагам, че името на вашия модел еPatient
. И така, идентификаторът наpatient_name
ще бъдеpatient-patient_name
. -
Добавете ajax заявка (по ваш изглед).
Кодът за извикване на AJAX може да изглежда точно както по-долу:
$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');
}
});
});");
Бележки:
- Променете ControllerName в горния код с вашия собствен.
- Предположих, че идентификаторът на
city
иstate
полета има следния идентификатор(а):patient-city
иstate-city
относително. - пациент е действие във вашия контролер
- Може да се наложи да премахнете регистрационните файлове за предупреждения и да направите някои персонализации на горния код
-
Не взех предвид никакви условия за почистване на кода. Моля, уверете се, че потребителските данни са правилни.
- Накрая добавете код за действие във вашия контролер.
Код на действие:
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
]);
}