Todo lo que necesitas es llamar a un AJAX
solicitud para obtener los campos necesarios. Solo actúa como se muestra a continuación:
-
(No sé el nombre de su modelo) eche un vistazo a su formulario y vea cuál es el
id
de supatient_name
campo. Por lo general, esmodelname-fieldname
. Supongo que el nombre de su modelo esPatient
. Entonces, la identificación depatient_name
seríapatient-patient_name
. -
Agregue una solicitud ajax (en su opinión).
El código para llamar a AJAX podría tener el siguiente aspecto:
$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');
}
});
});");
Notas:
- Cambiar el Nombre del controlador en el código anterior con el suyo propio.
- Supuse que la identificación de
city
ystate
campos tiene las siguientes identificaciones:patient-city
ystate-city
relativamente. - paciente es una acción en su controlador
- Es posible que deba eliminar alertas|registros y personalizar un poco el código anterior
-
No consideré ninguna condición para la limpieza del código. Asegúrese de que los datos del usuario sean correctos.
- Finalmente, agregue el código de acción en su controlador.
Código de acción:
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
]);
}