表单验证引发参数1传递给App \ Http \ Controllers \ Controller :: validate()必须是Illuminate \ Http \ Request的实例,给定整数

问题描述 投票:-2回答:2

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

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

错误行2044指向验证程序'date'=>'required | max: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);

                   }
   }
php laravel request
2个回答
0
投票

您将在此行覆盖$request变量:

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

简单地改用其他名称(在此以及在所有其他希望此整数的行中。验证器的使用应保持不变:

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

-1
投票

您显然正在将变量$request重新分配为整数。如果要将其用作Request对象,请不要这样做。如果需要在变量中存储一些值,请创建一个新变量。

© www.soinside.com 2019 - 2024. All rights reserved.