我正在使用Laravel Excel项目将数据导出到Excel文件。我可以使用硬编码的月份和年份值生成包含正确数据的文件,如此
public function month() {
Excel::create('New file', function($excel) {
$excel->sheet('New sheet', function($sheet) {
$data = new ReportModel;
$year = (int)2016;
$month = (int)9;
$donationData = $data->getDayData($month, $year);
$sheet->loadView('exports.month', array('donationData' => $donationData));
});
})->download('xlsx');
}
但是,当我尝试制作月份和年份变量时,请使用以下代码
public function month($month, $year) {
Excel::create('New file', function($excel) {
$excel->sheet('New sheet', function($sheet) {
$data = new ReportModel;
$year = (int)$year;
$month = (int)$month;
$donationData = $data->getDayData($month, $year);
$sheet->loadView('exports.month', array('donationData' => $donationData));
});
})->download('xlsx');
}
我收到以下错误
访问未声明的静态属性:App \ Http \ Controllers \ ExportController :: $ year
据我所知,这取决于可变范围,但无法理解PHP文档。我试过了
$year = (int)self::$year;
但我得到的结果相同。
答案 0 :(得分:2)
尝试在匿名函数范围内继承您需要访问的变量。
$example = function () use ($message) {
var_dump($message);
};
http://php.net/manual/en/functions.anonymous.php
类似的东西:
Excel::create('New file', function($excel) use ($year, $month) {
$excel->sheet('New sheet', function($sheet) use ($year, $month) {
$data = new ReportModel;
$year = (int)$year;
$month = (int)$month;
$donationData = $data->getDayData($month, $year);
$sheet->loadView('exports.month', array('donationData' => $donationData));
});
})->download('xlsx');
答案 1 :(得分:1)
您在假设它是关于可变范围的情况下是正确的,因此您需要"导入"回调范围内的$year
和$month
变量,重构这样的调用,它应该有效:
Excel::create('New file', function($excel) use ($year, $month) { ...