3
我正在使用Laravel將當前的一個站點轉換爲MVC模式,並且我一直在關注如何管理一個功能:動態日曆下載。使用laravel,我如何創建動態文件下載?
目前,當用戶瀏覽到calendar.php?var=1
,一個calendar.ics
文件是準備要下載,並且用戶將自動提示:
header('Content-type: text/calendar; charset=utf-8');
header('Content-Disposition: inline; filename='.$calData->filename($calData->filename).'.ics');
$calData = new CalendarBuilder($_GET['foo']);
$ical = "BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN\r\n";
$ical .= "BEGIN:VEVENT
UID:" . md5(uniqid(mt_rand(), true)) . "@foo.com
DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z
DTSTART:".$calData->eventStart($calData->foobar)."
DTEND:".$calData->eventEnd($calData->foobaz)."
SUMMARY:".$calData->summary($calData->fooboo)."
LOCATION:".$calData->location($calData->foofaa)."
DESCRIPTION:".$calData->description($calData->fi)."
END:VEVENT\r\n";
$ical .= "END:VCALENDAR";
echo $ical;
exit;
不過,現在我希望用戶能夠瀏覽到calendar/{slug}
並立即發送下載響應。但是,使用Laravel,我看不到任何方式這樣做。例如,我可以成立一個路線:
Route::get('calendar/{slug}', array(
'as' => 'calendar.get',
'uses' => '[email protected]'
));
這可以去我的控制器:
class CalendarController extends BaseController {
// GET Specific Calendar
public class get() {
// some logic
return Response::download();
}
}
但是用Response::download()
方法,似乎沒有要任何方式產生動態文件,因爲該方法的參數是:
Response::download($pathToFile, $name, $headers);
這似乎需要一個靜態的,預先存在的文件。在使用Laravel的MVC架構時,實現目前功能的最佳方式是什麼?