sql >> Databasteknik >  >> RDS >> Mysql

Yii2:fyll automatiskt i fält baserat på ett annat fält från relaterad tabell

Allt du behöver är att ringa en AJAX begäran om att få nödvändiga fält. Gör bara som nedan:

  1. (Jag vet inte ditt modellnamn) ta en titt på ditt formulär och se vad som är id av ditt patient_name fält. Det är vanligtvis modelname-fieldname . Jag antar att ditt modellnamn är Patient . Så, ID:t för patient_name skulle vara patient-patient_name .

  2. Lägg till en ajax-förfrågan (enligt din åsikt).

Koden för att anropa AJAX kan se ut precis som nedan:

$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');
        }
    });
});"); 

Anmärkningar:

  • Ändra ControllerName i ovanstående kod med din egen.
  • Jag antog att ID:t för city och state fields har följande id:n:patient-city och state-city relativt.
  • patient är en åtgärd i din handkontroll
  • Du kan behöva ta bort varningsloggar och anpassa koden ovan
  • Jag övervägde inga villkor för kodrensning. Se till att användardata är korrekta.

    1. Slutligen lägger du till åtgärdskod i din handkontroll.

Åtgärdskod:

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
    ]);
}



  1. CodeIgniter-konfigurationsteckenuppsättning och UTF-8-stöd

  2. Hur ditt småföretag kan dra nytta av cloud computing

  3. Unik värdebegränsning över flera kolumner

  4. Att överleva en Oracle-revision