Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Yii2:automatyczne wypełnianie pól na podstawie innego pola z powiązanej tabeli

Wszystko czego potrzebujesz to wywołanie AJAX prośba o uzyskanie potrzebnych pól. Po prostu zachowuj się jak poniżej:

  1. (Nie znam nazwy Twojego modelu)Spójrz na swój formularz i zobacz, jaki jest id Twojego patient_name pole. Zwykle jest to modelname-fieldname . Zakładam, że nazwa twojego modelu to Patient . Tak więc identyfikator patient_name byłoby patient-patient_name .

  2. Dodaj żądanie ajax (w twoim widoku).

Kod do wywołania AJAX może wyglądać tak jak poniżej:

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

Uwagi:

  • Zmień Nazwę kontrolera w powyższym kodzie z własnym.
  • Założyłem, że identyfikator city i state pola mają następujące identyfikatory:patient-city i state-city stosunkowo.
  • pacjent jest akcją w kontrolerze
  • Może być konieczne usunięcie alertów|logów i dostosowanie powyższego kodu
  • Nie brałem pod uwagę żadnych warunków do czyszczenia kodu. Upewnij się, że dane użytkownika są poprawne.

    1. Na koniec dodaj kod akcji do kontrolera.

Kod akcji:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Baza danych istnieje, ale zwraca błąd o treści Nieznana baza danych

  2. Zapytanie o zgodność dotyczące wstawiania wartości null w polu daty

  3. Zmienne sesji a tabela Mysql

  4. Połączenie JDBC — Class.forName vs Class.forName().newInstance?

  5. Tajemnica MySQL:wartość null nie różni się od łańcucha innego niż null