Я конвертирую один из моих текущих сайтов в шаблон MVC с Laravel, и я зациклился на том, как управлять одной функцией: динамическими загрузками календаря.Использование 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);
Это, кажется, требует статического, предварительно существующего файла. Каков наилучший способ реализовать функциональность, которую я имею в настоящее время при использовании архитектуры MVC Laravel?