首页 > 解决方案 > 将输入数据从一个视图传递到 Laravel 中的另一个视图

问题描述

我有两个视图,第一个视图用于收集用户输入(用户选择站点和日期),第二个视图是 pdf 视图(将在浏览器中显示)。现在的问题是当用户从第一个视图中选择输入(站点和日期)并单击一个名为“转换按钮”的按钮时,控制器和第二个视图(PDF)无法获取数据。

尝试多次仍然无法让过滤器数据显示在 pdf 视图上

<select name="sites" id="sites" required="required" style="border:1px solid black; margin-left:10px; width:200px; padding:3px; font-size:16px; text-align-last:center;" >
                                <option value="" selected="" disabled >  </option>
                                <option value="BBSR">ABC</option>
                                <option value="BPSR">BBC</option>
                                <option value="BKSR">BBE</option>
                                <option value="FCSR">QWE</option>  
</select>

<div class="row">
<div class="col-md-6">
<div class="form-group">

   <label style="margin-left:20px; font-size:16px;">Start Date : </label>
     <input type = "text"  name="startdate" id = "datepicker-8" style="border:1px solid black; width:270px;margin-left:47px; text-align:center; font-size:16px;" placeholder="Select Start Date" autocomplete="off" required="required" />
                                
</div>
</div>
                        
<div class='col-md-6'>
<div class="form-group">

   <label style="margin-left:20px;font-size:16px;">End Date : </label>
     <input type = "text"  name="enddate"   id = "datepicker-9" style="width:270px; margin-left:53px; text-align:center; font-size:16px;" placeholder=" End Date" disabled />
  </div>
</div>
</div>

按钮 :

<div class="button" style="bottom:-25px">
    <button class="btn btn-success" id="convertBtn" name="convertBtn" type="button" style="width:150px;  margin-left:60px; font-size:16px;" onclick="location.href = '/home/weeklybilling/pdf';" > Convert to PDF</button> 
 </div>
 </div>

阿贾克斯:

  $('#convertBtn').click(function() {     
                var e = document.getElementById("sites");
                var site = e.options[e.selectedIndex].text;
                var startdate = $('#datepicker-8').val();
                var enddate = $('#datepicker-9').val();
                var _token =$('input[name="_token"]').val();
            if(site != '' && startdate  != '' &&  enddate != '' )
            {  
                $.ajax({ 
                    paging: false,
                    searching: false,
                    processing: true,
                    retrieve: true,
                    serverSide: true,
                    headers: {
                        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                    },
                    url:"{{ route('weeklybilling.weeklypdf') }}",
                    type:"GET",
                    dataType:"json",
                    data:{
                        site:site, 
                        startdate:startdate,
                        enddate:enddate,
                        _token:_token,
                        },
                    
                    success:function(data){
                       
                    
                    },
                    error: function(data){
                        alert('Error');
                    }
                }) 
            } else
            {
                alert("Please select 'Site' & 'Date'. ");
            }
        });

路线

Route::get('/home/weeklybilling','WeeklyBillingController@Index');
Route::get('/home/weeklybilling/pdf','WeeklyBillingController@weeklybill')->name('weeklybilling.weeklybill'); 

控制器

public function weeklypdf(Request $request)
    {        
      $bills = DB::table('weekly_data')
               ->where('site', $request->site)
               ->whereBetween('report_date',[$request->startdate ,$request->enddate])
              ->get();

         //dd($bills); get null
          $pdf = \App::make('dompdf.wrapper');
          $pdf =PDF::loadView('weeklypdf',compact('bills'));

       $pdf ->setPaper('a4','landscape');
       return $pdf->stream('weeklyreport.pdf');
        
    }

任何人都知道如何知道如何从第一个视图获取输入数据并将其传递给第二个视图(pdf)? pdf 视图中没有数据表**

标签: phpajaxlaravelpdfdompdf

解决方案


这是因为您的方法是GET并且您正在发送参数,例如POST方法更改路由POST或更改发送参数方式,如下所示:

             $.ajax({ 
                paging: false,
                searching: false,
                processing: true,
                retrieve: true,
                serverSide: true,
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                },
                url:"{{ route('weeklybilling.weeklypdf') }}" + "?site="+site+"&startdate="+startdate+"&enddate="+enddate+"&_token="+_token,
                type:"GET",
                success:function(data){
                   
                
                },
                error: function(data){
                    alert('Error');
                }
            }) 

我希望它有效。


推荐阅读