好吧,首先我在數據庫上有一個“設置”表,其中有“名稱”和“值”字段,它是一種配置類型的表,其中的值可以是從字符串到布爾值等的任何值?,F在,在我的刀片上,我有一個帶有各種輸入的表單,其中包括“文本”,“選擇”,“復選框”等。在控制器上提交表單時,我foreach為每個屬性運行一個where,$request將其鍵作為名稱存儲,并將其值存儲為它在數據庫上的值。$agency_id = Auth::user()->agency->id;$settings = AgencySettings::whereAgencyId($agency_id)->get();foreach ($request->except('_token') as $key => $value){ $setting = $settings->where('name','=',$key)->first(); if (boolval($setting)) { $setting->value = $value; $setting->update(); }else{ $setting = new AgencySettings; $setting->agency_id = $agency_id; $setting->name = $key; $setting->value = $value; $setting->save(); }}除了不在復選框內的未選中復選框外,其余一切都運行良好$request。我知道我可以像這樣處理它們,$request->has('name_of_checkbox')但是由于數據庫中表的動態性質,我不想在Controller上硬編碼特定設置的名稱。我的目標是,無論我在前端使用的不同設置的數量如何,Controller上的代碼都將相同(也許將來會需要添加更多設置)。所以我的問題是,有沒有一種方法可以在服務器端處理這些復選框而不必專門引用它們,或者有一種無論狀態如何始終將復選框的值返回給服務器的方法?我的第一個想法是使用javascript和隱藏的輸入,但是也許有更好的方法。
2 回答

慕哥9229398
TA貢獻1877條經驗 獲得超6個贊
您可以在每個要接收的復選框之前添加一個具有相同名稱的隱藏字段,例如:
<input type="hidden" name="checkbox-1" value="0" />
<input type="checkbox" name="checkbox-1" value="1" /> My checbox 1
如果未選中該字段,則將發送帶有0值的隱藏字段,而選中該字段時,將發送正確的真實值。
注意:確保您首先添加隱藏的字段,以便在選中該字段時收到已選中的字段。

拉丁的傳說
TA貢獻1789條經驗 獲得超8個贊
另一種解決方案是簡單地檢查post數組中是否設置了“ checkbox-1”的值。因此,您將在控制器端將default設置為0并檢查值是否存在,而不是檢查它是0還是1。
- 2 回答
- 0 關注
- 168 瀏覽
添加回答
舉報
0/150
提交
取消