[英]I have patients information in database, now I want to access one's information in another form in Laravel Project
我的數據庫中有患者信息,現在我想以其他形式訪問一個人的信息。 當我輸入患者的ID時,需要自動填寫/加載患者姓名字段。 我也有我的患者模型。
這是...
<form method="post" class="" action="" >
@csrf
<div class="input-field col s3">
<input name="patient_id" id="id" type="text" class="validate">
<label class="active" for="id">Patient ID</label>
</div>
<div class="input-field col s9">
<input name="patient_name" id="name" type="text" class="validate">
<label class="active" for="name">Patient Name</label>
</div>
<div class="input-field col s12">
<select name="room">
<option value="" disabled selected>Select Room</option>
<option value="2001">ROOM 2001 - Non AC - 500</option>
<option value="4001">ROOM 4001 - AC -800</option>
<option value="301">CABIN 301 - AC - 1700</option>
</select>
</div>
<div class="input-field col s12 text-center">
<button class="btn waves-effect waves-light" type="submit" name="action">Assign Room</button>
</div>
</form>
您可以
在刀片模板中創建json對象,如果存在特殊字符,可能會有些混亂。 另外,如果您有大量記錄,我也不認為這是一個好的解決方案。
我將使用一個庫,例如https://select2.org/ ,您將在這里找到https://select2.org/data-sources/ajax ...我個人使用了這個https://語義 -ui.com/modules/search.html#/examples ...但我認為select2更直接。
在https://select2.org/data-sources/ajax的底部,您可以看到在查詢服務器時如何傳遞具有完整數據的對象。
由於名稱僅用於搜索ID(我假設)
您還可以調整控制器,使其看起來在CONCAT(id,name)中,以便用戶可以鍵入ID或名稱並找到患者。
通過compact
將患者詳細信息傳遞到view
,並在輸入字段中相應地使用patient
集合的值。
控制者
public function edit($id){
$patient = Patient::find($id);
return view('patients.edit, compact('patient'))
}
在視圖中
<input value="{{ old('name') ? old('name') : $patient->name }}" name="name" type="text" class="form-control" required>
你可以試試看
在輸入字段中輸入患者ID時執行JavaScript:
這是示例-> https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_ev_oninput
的HTML
<input name="patient_id" id="id" type="text" class="validate" oninput="myFunction()">
Java腳本
function myFunction() {
var p_id = document.getElementById("id").value;
$.ajax({
url: '{{URL::to('get_patient_name')}}'+ '/'+p_id,
type: "get",
success: function (data) {
}
});
}
現在選擇一條路線 :
Route::get('get_patient_name/{p_id}', 'PatientController@getPatientName'});
在控制器中獲取患者姓名
public function getPatientName($id)
{
return ModelName::where('patient_id',$id)->value('patient_name');
}
最后,在名稱輸入字段中打印患者姓名。
在javascript成功函數中
success: function (data) {
$('#name').val(data);
}
<input name="patient_id" onkeydown="getInfo(this)" id="id" type="text" class="validate">
<script type="text/javascript">
function getInfo(input){
var xhr = new XMLHttpRequest();
xhr.open("GET", 'your/url/to/get/info/from/db/'+input.value, true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send();
xhr.onload = function() {
var data = JSON.parse(this.responseText);
document.getElementById('name').value = data.name;
document.getElementById('room').innerHTML= '<option value="'+
data.room +'">'+data.room +'</option>';
data.name
}}
如果您想在不使用jquery的情況下進行操作,那么這里是Vanilla js
不要忘記更改請求網址!
document.querySelector("#id").addEventListener("change", function () {
let xml = new XMLHttpRequest(),
token = document.querySelector("input[name=_token]").value,
id = document.querySelector("#id").value,
name = document.querySelector("#name");
xml.open("get", "get/" + id); // change url
xml.setRequestHeader("X-CSRF-TOKEN", token);
xml.onreadystatechange = function () {
if (xml.readyState === 4) {
var response = JSON.parse(xml.responseText);
if (xml.status === 200 ) {
name.value = response
} else {
console.log('something bad happened');
}
}
};
xml.send()
})
然后在您的控制器中找到患者並發回
public function getPatient($id){
$patient = Patient::find($id);
return response()->json($patient->name);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.