Php 在同一控制器laravel 5.6中的方法之间传递变量数据

Php 在同一控制器laravel 5.6中的方法之间传递变量数据,php,laravel-5.6,Php,Laravel 5.6,嘿,伙计们,你们如何在同一控制器内的函数之间传递变量?我尝试过创建一个全局变量,并使用Session::来设置和获取值,但这两种方法都不起作用。我从generate.blade.php获取开始日期和结束日期的值,并将该值传递给我的下载PDF函数,以根据日期范围过滤数据。有谁能启发我,我如何才能做到这一点 GenerateReportController <?php namespace App\Http\Controllers; use Illuminate\Http\Request;

嘿,伙计们,你们如何在同一控制器内的
函数
之间传递变量?我尝试过创建一个全局变量,并使用
Session::
来设置和获取值,但这两种方法都不起作用。我从generate.blade.php获取
开始日期
结束日期
的值,并将该值传递给我的
下载PDF
函数,以根据日期范围过滤数据。有谁能启发我,我如何才能做到这一点

GenerateReportController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;

use App\Attendance;
use App\Subject;
use PDF;
use Session;  
use View;



class GenerateReportController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */

    public $start_date;
    public $end_date;

    public function index()
    {
        $this->start_date = Input::get('startDate');
        $this->end_date = Input::get('endDate');

        $subjects = Subject::all();
        return View::make('generate', compact('subjects',$subjects));
    }

    public function downloadPDF()
    {

        $dateBetween = Attendance::whereBetween('date',array($this->start_date, $this->end_date))->get();

        //dd($dateBetween);
        $pdf = PDF::loadView('pdf',compact('dateBetween'));
        $name = "Attendance Report";
        return $pdf->stream($name.'.pdf');
    }
}
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;

use App\Attendance;
use App\Subject;

use Session;
use PDF;
use View;

class GenerateReportController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $subjects = Subject::all();
        return View::make('generate', compact('subjects'));
    }

    public function downloadPDF(Request $request)
    {

        $dateBetween = Attendance::whereBetween('date',array($request->startDate,$request->endDate))->where('s_code',$request->id)->get();
        $pdf = PDF::loadView('pdf',compact('dateBetween'));
        $name = "Attendance Report";
        return $pdf->stream($name.'.pdf');
    }
试试下面的方法

途中

 Route::get('dashboard/attendance/report','GenerateReportController@downloadPDF');
首先在控制器中添加此外观

use Illuminate\Http\Request;
将函数转换为

public function downloadPDF($request)
{
    //try to print first dd($request->all())
    $dateBetween = Attendance::whereBetween('date',array($request->start_date, $request->end_date))->get();

    //dd($dateBetween);
    $pdf = PDF::loadView('pdf',compact('dateBetween'));
    $name = "Attendance Report";
    return $pdf->stream($name.'.pdf');
}
形式

{!!Form::open(['action'=>'GenerateReportController@downloadPDF']) !!}
{!!Form::Label('subject','subject:')
@foreach($subject作为$subject)
{{$subject->s_name}
@endforeach

{!!Form::Label('startDate','Start Date:')!!}
{!!Form::input('date','startDate',null,['id'=>'datetimepicker','class'=>'datepicker','data date format'=>'yy/mm/dd'])

{!!Form::Label('endDate','endDate:')!!}
{!!Form::input('date','endDate',null,['id'=>'datetimepicker','class'=>'datepicker','data date format'=>'yy/mm/dd']) {!!表单::提交('submit') {!!Form::close()!!}
已解决

而不是将变量一个函数传递给另一个函数。使用post方法将
$request
发送到第二个控制器,并使用
$request->name
获取值

控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;

use App\Attendance;
use App\Subject;
use PDF;
use Session;  
use View;



class GenerateReportController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */

    public $start_date;
    public $end_date;

    public function index()
    {
        $this->start_date = Input::get('startDate');
        $this->end_date = Input::get('endDate');

        $subjects = Subject::all();
        return View::make('generate', compact('subjects',$subjects));
    }

    public function downloadPDF()
    {

        $dateBetween = Attendance::whereBetween('date',array($this->start_date, $this->end_date))->get();

        //dd($dateBetween);
        $pdf = PDF::loadView('pdf',compact('dateBetween'));
        $name = "Attendance Report";
        return $pdf->stream($name.'.pdf');
    }
}
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;

use App\Attendance;
use App\Subject;

use Session;
use PDF;
use View;

class GenerateReportController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $subjects = Subject::all();
        return View::make('generate', compact('subjects'));
    }

    public function downloadPDF(Request $request)
    {

        $dateBetween = Attendance::whereBetween('date',array($request->startDate,$request->endDate))->where('s_code',$request->id)->get();
        $pdf = PDF::loadView('pdf',compact('dateBetween'));
        $name = "Attendance Report";
        return $pdf->stream($name.'.pdf');
    }

downloadPDF()
创建一个post/get路径,并以该路径提交表单。在
下载PDF($request)
中传递$request参数。然后访问它
$request->start\u date
@EmptyBrain我已经更新了我的路线,请告诉我我是否正确。最好将日期作为参数传递:dashboard/attention/report?start=start\u date&end=end\u date我已经尝试了你给出的解决方案,不幸的是它在我的PDF视图中没有返回任何数据。我尝试了
dd($request->start\u date)
,它正在返回null@DexterSiah请先尝试
dd($request->all())
查看您的请求参数。我认为您的值位于
date
键中。你检查过了吗?它正在返回
[]
我是否遗漏了什么,或者你是否误解了我想如何获得我的
日期。“开始日期”和“结束日期”是从“索引”控制器(生成视图)捕获的,我想将其传递给“生成pdf”控制器(pdf视图)。表单应该可以工作。你检查过更新吗??另一种方式,比如你说索引函数已经捕获了值,你可以像
$this->downloadPDF($start\u date,$end\u date)
那样发送它,我可以知道我应该把那行代码放在哪里吗?
{!! Form::open(['action'=>'GenerateReportController@downloadPDF','target' => '_blank']) !!}
{!! Form::Label('subject', 'Subject:') !!}
<select class="form-control" name="id">
    @foreach($subjects as $subject)
    <option value="{{$subject->id}}">{{$subject->s_name}}</option>
    @endforeach
</select>
<br>
{!! Form::Label('startDate', 'Start Date:') !!}<br>
{!! Form::date('startDate', 'startDate',['id' => 'datetimepicker','class' => 'datepicker']) !!}
<br>
<br>
{!! Form::Label('endDate', 'End Date:') !!}<br>
{!! Form::date('endDate', 'endDate',['id' => 'datetimepicker','class' => 'datepicker']) !!}
<br>
<br>
{!!Form::submit('Generate PDF',['class' => 'btn btn-primary'])!!}
{!! Form::close() !!}
Route::get('dashboard/attendance/generate','GenerateReportController@index');
Route::post('dashboard/attendance/report','GenerateReportController@downloadPDF');