问题描述
**我在导出文件上传递参数时遇到问题,我想根据页面上选择的日期过滤导出。希望你能帮我解决这个问题。谢谢**
这是我的 ExportController,我从表单向我的控制器请求数据,以便为导出集合指定日期。
namespace App\Http\Controllers;
use Illuminate\Http\Response;
use Illuminate\Http\Request;
use App\Exports\ExportAttendance;
use Maatwebsite\Excel\Facades\Excel;
class ExportController extends Controller
{
public function export(Request $request)
{
return Excel::download(new ExportAttendance($request->input('min'),$request->input('max')),'Attendance.xlsx');
}
}
这是我的ExportAttendance.PHP,它负责集合的导出。在查询功能上,我想根据控制器上请求的日期过滤数据。我如何将数据从控制器传递到我的 Export.PHP,我确实使用了构造函数,但它总是返回错误。
public function headings():array{
return[
'Name','In (AM)','Out (AM)','In (PM)','Out (PM)','Meeting','Task','Note','Total Hours','Date'
];
}
public function query()
{
$start = "2021-06-14";
$end = "2021-06-14";
return Attendance::select('Name','InAm','OutAM','InPM','OutPM','SpecialTask','Undertime','TotalHours','Date')->whereBetween('Date',[$start,$end]);
}
public function collection()
{
return Attendance::all();
}
public function map($attendance):array
{
return[
$attendance->Name,$attendance->InAM,$attendance->OutAM,$attendance->InPM,$attendance->OutPM,$attendance->Meeting,$attendance->SpecialTask,$attendance->Undertime,$attendance->TotalHours,$attendance->Date,];
}
解决方法
而不是将 $request 对象传递给导出类。您可以简单地使用 request
辅助方法。
public function query()
{
return Attendance::select('Name','InAm','OutAM','InPM','OutPM','Meeting','SpecialTask','Undertime','TotalHours','Date')
->whereBetween('Date',[request('start'),request('end')]);
}
传递参数也应该有效。请让我知道您看到了什么错误,以便我更新我的答案。
我使用了构造函数
public function query()
{
$start = "2021-06-14";
$end = "2021-06-14";
return Attendance::select('Name','Date')->where('Date','=',$this->year);
}
这是我的控制器,
public function export(Request $request)
{
ob_start();
$datestart = $request->input('min');
$datestart = ob_get_contents();
return Excel::download(new ExportAttendance($datestart),'Attendance.xlsx');
ob_end_flush();
}
另一个问题出现了,当我使用 ob_end_clean() 时,我所有的变量值都返回了空值。