我正在研究一個在 laravel 中有很多可能值的表單。我已經使用 fieldset 元素來捆綁某些輸入,并使禁用輸入變得更加容易。我可以通過簡單地禁用 fieldset 元素來做到這一點,但我似乎無法通過 laravel 取回這個或關于圍繞某些輸入的 fieldset 元素的任何其他資訊。
我目前使用陣串列示法設定了輸入的名稱,以便以一種我可以迭代它的方式組織資料,如下所示:
<input type="number" name="input[items][{{$item->id}}][price]">
這個實作就像我想要的那樣作業,但是它在多行中重復,導致大塊的重復文本,我想盡可能地壓縮這些文本,以實作可維護性和可讀性。
我正在嘗試制作的代碼目前看起來有點像這個例子:
@foreach($list as $item)
<fieldset name="input[items][{{$item->id}}]">
<input type="text" name="title">
<input type="number" name="amount">
</fieldset>
@endforeach
<fieldset name="input[tasks][878]">
<input type="text" name="...">
</fieldset>
我希望通過的資料采用這樣的格式(忽略三點作為占位符)
input: [
items: [
321: {
title: "product name"
amount: 7
},
123: {
title: "other product name"
amount: 2
}
],
tasks: [
878: {
...
}
]
]
所以我的問題是:欄位集元素是否包含在 POST 請求中,還是純粹供客戶端使用?有沒有辦法通過沿輸入發送有關欄位集的資料來完成這項作業?如果沒有這種可能性,我唯一能想到的就是進行隱藏輸入,但這似乎是錯誤的做法。
我發現了更多資訊,但并沒有完全回答我的問題。
HTML 輸入陣列 HTML 輸入名稱屬性作為陣列 - 如何在 laravel 中訪問值
https://laravel.com/docs/8.x/requests#flashing-input-then-redirecting
uj5u.com熱心網友回復:
這<fieldset>只是一個塊級元素,用于將相關元素邏輯分組在一起。當與元素一起使用時,它對可訪問性要求很有用<legend>,但實際上并不包含在表單提交中。
由于<input>您的 < 元素fieldset>沒有唯一name屬性,因此您的實作將發生的所有事情都是任何具有相同屬性的后續元素name將覆寫先前分配給key表單提交時的值(如果你已經做了一些除錯等)。
$item->id與其將密鑰應用于,不如將其<fieldset>應用于輸入:
<fieldset>
<legend>items</legend>
@foreach($list as $item)
<input type="text" name="items[{{ $item->id }}][title]" />
<input type="number" name="items[{{ $item->id }}][amount]" />
@endforeach
</fieldset>
$request從您的物件 ( )訪問時,上述內容將導致以下結構dd($request->items);:
^ array:2 [▼
321 => array:2 [▼
"title" => "product name"
"amount" => "7"
]
123 => array:2 [▼
"title" => "other product name"
"amount" => "2"
]
]
然后,您可以將相同的原理應用于tasks.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/523058.html
標籤:php拉拉维尔形式邮政
