表单验证抛出传递给 App\Http\Controllers\Controller::validate() 的参数



我正在尝试提交一份保存燃料详细信息的表格,它应该检查$vehicleMonitored是否是官员。 如果是官员,它应该检查请求的总燃料是否不超过他的每周限额。 该代码工作正常,因为如果您尝试请求超过特定官员燃料限制的燃料,则会弹出错误,但在您请求的燃料低于官员限制的情况下,它不会保存数据。 它抛出以下错误:

"传递给 App\Http\Controllers\Controllers\Controller::validate(( 的参数 1 必须是 Illuminate\Http\Request 的实例,给定整数,在第 2044 ◀ 行的 C:\xampp\htdocs\laravel\app\Http\Controllers\FuelController.php 中调用">

错误行 2044 指向验证器"日期"=> "必需|最大:255",

public function store(Request $request)
{

$this->validate($request, [
'date' => 'required|max:255',
'liters' => 'required',
'type' => 'required',
'vehicle_generator'=> 'required',
'recipient'=> 'required',
'vehicle_type'=> 'required',
'voucher' => 'required',
'authorized_by'=> 'required',
]);
$requestedFuel = $request->input('liters');
$vehicleMonitored = $request->input('vehicle_type');
if($vehicleMonitored == 'official'){
$official  = $request->input('recipient');
$sum =  DB::table('fuels')->whereBetween('created_at', [
Carbon::now()->startOfWeek(),
Carbon::now()->endOfWeek(),
])->where('recipient',$official)->sum('liters');
$Name = Officials::where(DB::raw('concat(Name," ",Surname)') ,$official )->get();
$name = $Name->pluck('Fuel_Limit');
$limit = $name->first();
$over = $limit - $sum;
// sum of liters plus requested liters 
$request = $requestedFuel + $sum;
// dd($limit);
if($limit != null){
if($request >= $limit){
return redirect('fuels')->with('error',  $official ." has just "            .$over.'Liters remaining for the week ');
}
if($sum > $limit){
return redirect('fuels')->with('error',  $official .'  readched weekly fuel limit ');
}
}
}       
//getting input of liters and reg. no:
$myliters = $request->input('liters'); 
$regs = $request->input('vehicle_generator'); 
//saves to db
Fuel::create($request->all());

//return message
if($vehicleMonitored == 'official'){
return redirect('fuels')->with('success', " You have sucessfully Supplied ".$myliters."L to ".$official. " for ".$regs);
}
else{
return redirect('fuels')->with('success', " You have sucessfully Supplied ".$myliters."L to  ".$regs);
}
}

您正在覆盖此行中的$request变量:

// sum of liters plus requested liters 
$request = $requestedFuel + $sum;

只需使用不同的变量名称 - 在期望这是一个整数的所有其他行中:

// sum of liters plus requested liters 
$requestSum = $requestedFuel + $sum;
if($limit != null){
if($requestSum >= $limit){
...

验证器用途应保持不变:

//getting input of liters and reg. no:
$myliters = $request->input('liters'); 
$regs = $request->input('vehicle_generator'); 

最新更新