php - migraciones - Yii2: campos de relleno automático basados en otro campo de la tabla relacionada
yii2 odbc (1)
Todo lo que necesita es llamar a una solicitud de AJAX para obtener los campos necesarios. Solo actúa como abajo:
(No sé el nombre de su modelo) eche un vistazo a su formulario y vea cuál es la
idde su campopatient_name. Por lo general, esmodelname-fieldname. Supongo que su nombre de modelo esPatient. Entonces, la identificación depatient_nameseríapatient-patient_name.Agregue una solicitud de AJAX (en su opinión).
El código para llamar a AJAX podría verse como a continuación:
$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:
- Cambie el ControllerName en el código anterior con el suyo.
- Supuse que la identificación de
statecampos de lacityy elstatetiene los siguientes id. (S):patient-cityystate-cityrelativamente. - paciente es una acción en tu controlador
- Es posible que tenga que eliminar alertas | registros y hacer algunas personalizaciones en el código anterior
No consideré ninguna condición para la limpieza del código. Por favor, asegúrese de que los datos del usuario sean correctos.
- Finalmente, agregue 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
]);
}
Tengo una tabla MySQL y un modelo patient_entry que contiene los campos patient_name , city y state . También tengo otra tabla / modelo health_card que también contiene patient_name , city y state .
Supongamos que la tabla patient_entry ya está llena con patient_name , city y state .
Cuando ingreso datos en el formulario health_card , cuando selecciono el patient_name del patient_name en el campo desplegable relacionado con la tabla patient_entry , deseo que los campos relacionados con la city y el state se llenen automáticamente.
Mi _form.php para health_card tiene este aspecto:
<head>
<script>
$this->registerJs("$(''#healthcard-patient_name'').on(''change'',function(){
$.ajax({
url: ''".yii/helpers/Url::toRoute("HealthCard/patient")."'',
dataType: ''json'',
method: ''GET'',
data: {id: $(this).val()},
success: function (data, textStatus, jqXHR) {
$(''#healthcard-city'').val(data.city);
$(''#healthcard-pincode'').val(data.pin);
},
beforeSend: function (xhr) {
alert(''loading!'');
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(''An error occured!'');
alert(''Error in ajax request'');
}
});
});");
</script>
</head>
Y en el controlador he agregado, según la sugerencia, esto:
public function actionPatient($id){
// you may need to check whether the entered ID is valid or not
$model= /app/models/PatientEntry::findOne([''id''=>$id]);
return /yii/helpers/Json::encode([
''city''=>$model->disrict_city,
''pin''=>$model->pin_code
]);
}