无法访问Laravel控制器功能中的可变数据

时间:2016-09-12 09:30:07

标签: php laravel laravel-5 laravel-excel

我正在使用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;

但我得到的结果相同。

2 个答案:

答案 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) { ...