我需要驗證已經轉換為數值陣列的 laravel 中 excel 用戶上傳的每一行。
我想要的驗證是:
- 確保第一個欄位 (0) 不為空,
- 然后檢查輸入是否為“PRODUCTION-PROJECT”,如果是,則需要第二個欄位(1)。
如何做到這一點?
我的控制器匯入類
$file = $request->file('file');
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$reader->setLoadSheetsOnly(['Upload']);
$reader->setReadDataOnly(true);
$spreadsheet = $reader->load($file->getRealPath());
$sheet = $spreadsheet->getActiveSheet();
$array = $sheet->toArray();
陣列如下所示:
array:8 [
0 => array:11 [
0 => "PRODUCTION-PROJECT"
1 => "Consumable equipment expenses"
2 => "2022-07"
3 => "2022-08"
4 => "Forstr"
5 => "DOMESTIC"
6 => "ABCDE"
7 => "IDR"
8 => 2000
9 => 1
10 => "Enim temporibus est quis."
],
1 => array:11 [
0 => "PRODUCTION-PROJECT"
1 => null
2 => "2022-08"
3 => "2022-08"
4 => "RX"
5 => "DOMESTIC"
6 => "FGHIJ"
7 => "USD"
8 => 2000
9 => 1
10 => null
],
];
到目前為止我嘗試過的驗證是這樣的:
$validatedData = Validator::make($array, [
'*.0' => 'required',
'*.1' => Rule::requiredIf('*.0' === 'PRODUCTION-PROJECT')
];
并且驗證沒有顯示任何錯誤
uj5u.com熱心網友回復:
的引數Rule::requiredIf應該是您需要自定義規則和輸入的回呼函式。
最好Rule::requiredIf('*.0' === 'PRODUCTION-PROJECT')改成'required_if:*.0,PRODUCTION-PROJECT"'
所以正確的代碼是:
$validatedData = Validator::make($array, [
'*.0' => 'required',
'*.1' => 'required_if:*.0,PRODUCTION-PROJECT'
];
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/417494.html
標籤:
