在 Laravel 控制器中请求输入 null

Posted

技术标签:

【中文标题】在 Laravel 控制器中请求输入 null【英文标题】:Request input null in Laravel Controller 【发布时间】:2021-05-16 10:41:32 【问题描述】:

您好,我在 Controller 中使用 request 获取输入值时遇到问题,它总是返回 null。这是我在 jquery 中的代码,我正在使用 Ajax 将值传递给控制器​​。

$('.generate').click(function()

    var dstart =  $("#datepickerstart").val();
    var dend =  $("#datepickerend").val();
   
  
      //var empid = $('#empid').val();
      if($('#empid').val().length == 0)
      
        empid = 0;

      
      else

        empid = $('#empid').val();
      
     

    
   
    var dStart = 0;
    var dEnd = 0;
    //alert(empid);
    $.ajax(
          type: "GET",
          url: "route('manageattendance', '')"+"/"+empid,
          data:$('#attendanceform').serialize(),
    
          success: function(response)
            
              console.log(response);
            // alert("data caught");
            $('.content').load('manageattendance/'+empid); 
            ,  
          error: function(error)
            
               console.log(error);
             //alert("not caught ");
             // alert($('#editForm').serialize());
             
    
     );
    //alert(dstart);
    //alert(dend);
);

这是我在控制器中的代码。我正在尝试使用 request 获取数据,但是当我检查它时它返回 null 。原因是什么?请帮我。谢谢

 public function index($id = 0,Request $request)
    
    

        if($id == 0)
           
          
           $current_date = date('Y-m-d');
           $attendances = Attendance::select('Name','CheckIn','CheckOut','Note','Date','TotalHours')- 
>where('Date','=',$current_date)->get();
            //$start = '2021-02-10';
            //$end = '2021-02-11';
           

            //$attendances = 
Attendance::select('Name','CheckIn','CheckOut','Note','Date','TotalHours')->whereBetween('Date', 
[$start,$end])->get();
            return view('manage.index',compact('attendances'));
        
      
        else
        
            $start = $request->input('datepickerstart');
            $end = $request->input('datepickerend');
            $newS = date('Y-m-d', strtotime($start));
            $newE = date('Y-m-d', strtotime($end));
            



            $sUser = User::select('name')->where('id','=',$id)->get();
            //$attendances = 
Attendance::select('Name','CheckIn','CheckOut','Note','Date','TotalHours')->where('user_id','=',$id)- 
>get();
            $attendances = 
Attendance::select('Name','CheckIn','CheckOut','Note','Date','TotalHours')->whereBetween('Date', 
 [$start,$end])->get();
            return view('manage.index',compact('attendances','sUser'));
           // dd($start);
        

     
       // return view('manage.index');
     
    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    

【问题讨论】:

有人吗?请帮帮我 你能分享你的路线manageattendance吗? 【参考方案1】:

不要忘记表单中的 csrf_field 并将 id 放入 input 名称是 id

$('.generate').click(function()

    var dstart =  $("#datepickerstart").val();
    var dend =  $("#datepickerend").val();
   
  
      //var empid = $('#empid').val();
      if($('#empid').val().length == 0)
      
        empid = 0;

      
      else

        empid = $('#empid').val();
      
     

    
   
    var dStart = 0;
    var dEnd = 0;
    //alert(empid);
    $.ajax(
          type: "GET",
          url: "route('manageattendance.update')"+"/"+empid,
          data:$('#attendanceform').serialize(),
    
          success: function(response)
            
              console.log(response);
            // alert("data caught");
            $('.content').load('manageattendance/'+empid); 
            ,  
          error: function(error)
            
               console.log(error);
             //alert("not caught ");
             // alert($('#editForm').serialize());
             
    
     );
    //alert(dstart);
    //alert(dend);
);

 public function index(Request $request)
    
    

        if(request->id == 0)
           
          
           $current_date = date('Y-m-d');
           $attendances = Attendance::select('Name','CheckIn','CheckOut','Note','Date','TotalHours')- 
>where('Date','=',$current_date)->get();
            //$start = '2021-02-10';
            //$end = '2021-02-11';
           

            //$attendances = 
Attendance::select('Name','CheckIn','CheckOut','Note','Date','TotalHours')->whereBetween('Date', 
[$start,$end])->get();
            return view('manage.index',compact('attendances'));
        
      
        else
        
            $start = $request->input('datepickerstart');
            $end = $request->input('datepickerend');
            $newS = date('Y-m-d', strtotime($start));
            $newE = date('Y-m-d', strtotime($end));
            



            $sUser = User::select('name')->where('id','=',$request->id)->get();
            $attendances = 
Attendance::select('Name','CheckIn','CheckOut','Note','Date','TotalHours')->where('user_id','=',$request->id)->whereBetween('Date', 
 [$start,$end])- 
>get();
           
            return view('manage.index',compact(['attendances'=>$attendances,'sUser'=>$sUser]));
           // dd($start);
        

     
       
    

【讨论】:

是的,我的表单中有 csrf_field ,但是表单内部的输入值在进入控制器时为空。 @KletoRalphFuentesSalvo ajax 代码在刀片页面或外部 js 文件中?

以上是关于在 Laravel 控制器中请求输入 null的主要内容,如果未能解决你的问题,请参考以下文章

通过 Ajax 传递对象数组并在控制器(Laravel)中作为输入

无法从laravel控制器获取输入值

Laravel 认为 jQuery 总是 GET 请求方法

laravel - 使用请求类或输入类

Laravel:在视图中获取当前控制器(处理请求)?

laravel 模型从控制器获取请求信息