簡體   English   中英

Laravel + x-editable:違反完整性約束 1048:沒有數據通過

[英]Laravel + x-editable: Integrity constraint violation 1048: no data passed

使用 x-editable 創建一個可編輯的表單,通過 ajax 發送請求。 表格如下所示:

<a href="#" class="editable editable-click" id="mileage" 
        data-name="mileage" 
        data-type="number" 
        data-pk="{{ $car->id }}" 
        data-original-title="Enter mileage">
    {{ $car->mileage }}
</a>

然后是JS:

$('#mileage').editable({
  url: '{{ route('changeMileage', $car->id) }}',
  type: 'number',
  pk: {{ $car->id }},
  name: 'mileage',
  title: 'Enter mileage in km',
  validate:function(value){
    if ($.trim(value) === '') {
      return "Field is required";
    }
  }
})

在我的 controller 中:

$car = Car::where('id', $id)->first();

$this->validate($request, [
        'value' => 'number|min:' . $car->mileage . '|max:999999',
]);

$car->update([$car->mileage => $request->value]);

controller 代碼有點亂,因為我嘗試了它的不同版本。 只是因為我需要驗證(輸入的里程不能少於現有里程)。

但問題是,一旦我發送請求,我得到了Integrity constraint violation: 1048錯誤,這表示mileage字段為空。 運行dd($request->value)給我null ,但監視來自瀏覽器的請求,它按預期進行: name=mileage&value=325000&pk=1

controller 不知何故缺少value 請問有什么解決辦法嗎?

PS 我故意沒有檢查pk值,因為我在當前頁面上只有一個字段可以編輯,並且已經有id信息。

PPS 我嘗試了所有我能想象到的方法 - dd($request->all())仍然返回一個空數組 - []。

好吧,即使 x-editable 被放棄,它也可以工作。 在其他開發人員的幫助下,我想出了這個解決方案。

在我的 JavaScript 代碼中,在所有其他選項之后添加以下行:

ajaxOptions: {
  dataType: 'json'
},

在此之前,在同一個 JS 文件中,添加一行來設置 ajax 標頭:

$.ajaxSetup({
  headers: {
    'Content-Type': 'application/json',
    "X-CSRF-Token": "{{ csrf_token() }}",
    'X-Requested-With': 'XMLHttpRequest',
    'Content-type': 'application/x-www-form-urlencoded; charset=UTF-8'
  },
});

在 Controller 中添加了一個檢查以查看請求是否通過 ajax 發送:

if($request->ajax()) {
  $car->update(['mileage' => $request->input('value')]);
  return response()->json(['success' => true]);
}

現在請求如下: name=mileage&value=325002&pk=1

之后,它就像一個魅力!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM