我正在嘗試驗證 Laravel 中的一些輸入陣列欄位。我的應用程式報告該欄位是必需的,即使它已被填寫。
我的驗證碼是:
$this->validate($request, [
'first_name' => 'required',
'last_name' => 'required',
'telephone' => 'required',
'email' => 'unique:contacts,email,' . $request->id,
'address' => 'required',
'address.0.address_line_1' => 'required',
]);
完整發布的陣列是:
Array
(
[id] => 1
[_token] => xxx
[first_name] => Joe
[last_name] => Bloggs
[contact_name] => Joe Bloggs
[telephone] => 077
[email] => [email protected]
[address] => Array
(
[0] => Array
(
['address_line_1'] => sss
['address_line_2'] =>
['city'] =>
['county'] =>
['postcode'] =>
['property_type'] => site
)
)
)
我的輸入欄位是這樣構造的:
address[0]['address_line_1']
我收到驗證訊息錯誤:
The address.0.address line 1 field is required.
有人知道這里有什么問題嗎?
uj5u.com熱心網友回復:
那是因為您沒有任何address_line_1或address_line_2在您的陣列驗證中,但您已經發布了這兩個元素。
您只有address.0.address_line_1并且沒有address.0.address_line_1在您發布的資料中。
您的陣列驗證的元素應該與您發布的內容相同。在您的情況下,您可以洗掉address.0.address_line_1并添加另外 2 個陣列驗證元素。
'address_line_1' => 'required',
'address_line_2' => 'required',
更新的答案:
'address' => 'required|array',
'address.*' => 'required|array',
'address.*.address_line_1' => 'required|string',
uj5u.com熱心網友回復:
只需用這個替換你的驗證器
$this->validate($request, [
'first_name' => 'required',
'last_name' => 'required',
'telephone' => 'required',
'email' => 'unique:contacts,email,' . $request->id,
'address' => 'required',
'address.*' => 'required',
'address.*.address_line_1' => 'required',
]);
uj5u.com熱心網友回復:
我設法找出導致問題的原因......它實際上與表單輸入欄位名稱有關。
我從輸入名稱中洗掉了單引號,它起作用了!
我變了:
<input type="text" class="form-control" name="address[0]['address_line_1']">
到,這個:
<input type="text" class="form-control" name="address[0][address_line_1]">
它奏效了!希望它可以幫助別人。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/439993.html
