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
id
de su campopatient_name
. Por lo general, esmodelname-fieldname
. Supongo que su nombre de modelo esPatient
. Entonces, la identificación depatient_name
serí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
state
campos de lacity
y elstate
tiene los siguientes id. (S):patient-city
ystate-city
relativamente. - 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
]);
}