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