我正在将我当前的一个网站转换为使用Laravel的MVC模式,而我仍然坚持如何管理一个功能:动态日历下载。
目前,当用户导航到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' => 'CalendarController@get'
));
这可能会转到我的控制器:
class CalendarController extends BaseController {
// GET Specific Calendar
public class get() {
// some logic
return Response::download();
}
}
但是使用Response::download()
方法,似乎没有任何方法可以动态生成文件,因为该方法的参数是:
Response::download($pathToFile, $name, $headers);
似乎需要一个静态的,预先存在的文件。在使用Laravel的MVC架构时,实现我目前使用的功能的最佳方法是什么?