Laravel - 如何获取输入并将其从一个视图传递到另一个视图 (Mpdf)
Laravel - How to get the inputs and pass it from one view to another view (Mpdf)
我的报告视图中有一个日期范围过滤器,因此当用户单击下载按钮时,它应该将选定的日期传递给 pdf 视图。
默认日期是当月的第一天到今天的日期,用户可以根据需要过滤日期。
如何将这些输入传递给另一个视图?
我应该从索引和过滤函数中传递 $from 和 $to 变量。
我尝试了很多方法,但其中 none 有效:(
有什么建议吗?
这是代码:(
控制器
public function index(Request $request){
$startDate = Carbon::now();
$from = $startDate->firstOfMonth()->format('Y-m-d');
$to = Carbon::now()->format('Y-m-d');
return view('Reports.index',compact('from','to');
}
public function filter(Request $request)
{
$from = Carbon::parse($request->input('datepicker_from'))->format('Y-m-d');
$to = Carbon::parse($request->input('datepicker_to'))->format('Y-m-d');
return view('Reports.index',compact('from','to');
}
public function print()
{
$pdf = PDF::loadView('Reports.reportPDF');
return $pdf->stream('my.pdf', array('Attachment' => 0));
}
网络
Route::get('print', 'reportController@print')->name('Reports.reportPDF');
观看次数
<a href="{{ route('Reports.reportPDF') }}" target="_blank"><button class="btn btn-success" title="Download PDF" data-toggle="tooltip"><i class="fa fa-download"></i></button></a>
将两个变量传递给 PDF 视图。
public function print($from,$to)
{
$pdf = PDF::loadView('Reports.reportPDF',['from'=>$from,'to'=>$to]);
return $pdf->stream('my.pdf', array('Attachment' => 0));
}
网络
Route::get('print', 'reportController@print/{from}/{to}')->name('Reports.reportPDF');
观看次数
<a href="{{ route('Reports.reportPDF',[$from,$to]) }}" target="_blank"><button class="btn btn-success" title="Download PDF" data-toggle="tooltip"><i class="fa fa-`download"></i></button></a>
我使用 Session 实现了这一点。非常感谢:)
Report.blade.php
@php(session(['to' => $to, date('Y-m-d')]))
@php(session(['from' => $from, date('Y-m-d')]))
PDF.blade.php
Showing Report From:
{{ Carbon\Carbon::parse(request()->session()->get('from'))->formatLocalized('%d %b %Y') }}
To:
{{ Carbon\Carbon::parse(request()->session()->get('to'))->formatLocalized('%d %b %Y') }}
嗯,问题是你做的不太对。
有一些选项:
使动作 print
接受参数。
使动作index
接受参数和一个标记参数
用于下载(如果参数出现,那么您的响应将是 PDF 下载)
像你一样使用会话。
对我来说,合适的方法是使 print
动作接受参数。
使用会话有些晦涩难懂,而且很难维护。
总而言之,这是我的推荐:
操作 index
或 view
带日期范围过滤器。
操作 download
带有日期范围过滤器。 (基本上相同的输入
作为 view
动作)。当然,单击按钮时,您将使用 JavaScript 收集当前显示给用户的日期范围输入,然后对 download
操作执行 AJAX 调用。
这是最干净的解决方案,避免了与会话的紧密耦合,并且更具可读性和易懂性。
我的报告视图中有一个日期范围过滤器,因此当用户单击下载按钮时,它应该将选定的日期传递给 pdf 视图。
默认日期是当月的第一天到今天的日期,用户可以根据需要过滤日期。
如何将这些输入传递给另一个视图?
我应该从索引和过滤函数中传递 $from 和 $to 变量。
我尝试了很多方法,但其中 none 有效:(
有什么建议吗?
这是代码:(
控制器
public function index(Request $request){
$startDate = Carbon::now();
$from = $startDate->firstOfMonth()->format('Y-m-d');
$to = Carbon::now()->format('Y-m-d');
return view('Reports.index',compact('from','to');
}
public function filter(Request $request)
{
$from = Carbon::parse($request->input('datepicker_from'))->format('Y-m-d');
$to = Carbon::parse($request->input('datepicker_to'))->format('Y-m-d');
return view('Reports.index',compact('from','to');
}
public function print()
{
$pdf = PDF::loadView('Reports.reportPDF');
return $pdf->stream('my.pdf', array('Attachment' => 0));
}
网络
Route::get('print', 'reportController@print')->name('Reports.reportPDF');
观看次数
<a href="{{ route('Reports.reportPDF') }}" target="_blank"><button class="btn btn-success" title="Download PDF" data-toggle="tooltip"><i class="fa fa-download"></i></button></a>
将两个变量传递给 PDF 视图。
public function print($from,$to)
{
$pdf = PDF::loadView('Reports.reportPDF',['from'=>$from,'to'=>$to]);
return $pdf->stream('my.pdf', array('Attachment' => 0));
}
网络
Route::get('print', 'reportController@print/{from}/{to}')->name('Reports.reportPDF');
观看次数
<a href="{{ route('Reports.reportPDF',[$from,$to]) }}" target="_blank"><button class="btn btn-success" title="Download PDF" data-toggle="tooltip"><i class="fa fa-`download"></i></button></a>
我使用 Session 实现了这一点。非常感谢:)
Report.blade.php
@php(session(['to' => $to, date('Y-m-d')]))
@php(session(['from' => $from, date('Y-m-d')]))
PDF.blade.php
Showing Report From:
{{ Carbon\Carbon::parse(request()->session()->get('from'))->formatLocalized('%d %b %Y') }}
To:
{{ Carbon\Carbon::parse(request()->session()->get('to'))->formatLocalized('%d %b %Y') }}
嗯,问题是你做的不太对。
有一些选项:
使动作
print
接受参数。使动作
index
接受参数和一个标记参数 用于下载(如果参数出现,那么您的响应将是 PDF 下载)像你一样使用会话。
对我来说,合适的方法是使 print
动作接受参数。
使用会话有些晦涩难懂,而且很难维护。
总而言之,这是我的推荐:
操作
index
或view
带日期范围过滤器。操作
download
带有日期范围过滤器。 (基本上相同的输入 作为view
动作)。当然,单击按钮时,您将使用 JavaScript 收集当前显示给用户的日期范围输入,然后对download
操作执行 AJAX 调用。
这是最干净的解决方案,避免了与会话的紧密耦合,并且更具可读性和易懂性。