Laravel-如何获取输入并将其从一个视图传递到另一视图(Mpdf)

问题描述 投票:0回答:3

我在报告视图中有一个日期范围过滤器,因此,当用户单击下载按钮时,它将选择的日期传递给pdf视图。

默认日期是当前月份的第一天,直到今天为止,用户可以根据需要过滤日期。

如何将这些输入传递到另一个视图?

我应该同时从索引和过滤器函数传递$ from和$ to变量。

我尝试了很多方法,但是都没有用:(

有任何建议吗?

这里是代码:(

控制器

 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));
    }

Web

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>
php laravel session input mpdf
3个回答
1
投票

将两个变量传递到PDF视图。

public function print($from,$to)
    {
        $pdf = PDF::loadView('Reports.reportPDF',['from'=>$from,'to'=>$to]);
        return $pdf->stream('my.pdf', array('Attachment' => 0));
    }

Web

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>

0
投票

我已经使用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') }}

0
投票

嗯,问题是您做得不太正确。

有一些选项:

  • 进行操作print接受参数。

  • 使动作index接受参数和标记的参数进行下载(如果有参数,则您的响应将是PDF下载)

  • 像以前一样使用会话。

对我来说,适当的方法是使print操作接受参数。使用该会话有些晦涩难懂,将很难维护。

因此,我建议您这样做:

  • 带日期范围过滤器的indexview操作。

  • 动作download,带有日期范围过滤器。 (基本上是相同的输入作为view操作)。当然,单击按钮时,您将使用JavaScript收集当前显示给用户的日期范围输入,然后对download操作进行AJAX调用。

这是最干净的解决方案,避免与会话紧密耦合,并且更具可读性和可理解性。

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