Приветствую всех кто сюда попал, данный пост будет посвящен переводу первой заметки о нововведениях в Symfony 3.2 опубликованной в официальном блоге Symfony.
Это первая статья в серии «Новое в Symfony 3.2» где мы расскажем о новых самых интересных возможностях в грядущей версии Symfony 3.2 которая будет опубликована в ноябре 2016.
Базовый контроллер Symfony это служебный класс который включает в себя несколько хелпер методов для общих задач контроллера и предоставляет прямой доступ к сервис-контейнеру. В Symfony 3.2 мы добавили новый хелпер метод file()
для упрощения работы с бинарными файлами.
Самый простой способ использовать file()
хелпер это передача пути к файлу для его загрузки. Браузер принудительно начнет загрузку этого файла и выберет для файла имя аналогичное оригинальному файлу:
use Symfony\Bundle\FrameworkBundle\Controller\Controller; class BookController extends Controller { public function downloadAction() { $pdfPath = $this->getParameter('dir.downloads').'/sample.pdf'; return $this->file($pdfPath); } }
Если вы предпочтете указать собственное имя для файла, то просто воспользуйтесь вторым не обязательным аргументом:
return $this->file($pdfPath, 'sample-of-my-book.pdf');
Если вы предпочтете показать содержимое файла в браузере вместо его принудительной загрузки, используйте не обязательный третий аргумент:
use Symfony\Component\HttpFoundation\ResponseHeaderBag; return $this->file($pdfPath, 'sample.pdf', ResponseHeaderBag::DISPOSITION_INLINE);
В дополнение к пути к файлу в качестве строки, этот хлпер так же может принимать потомки File
и UploadedFile
в качестве первого аргумента:
use Symfony\Component\HttpFoundation\File\File; $samplePdf = new File($this->getParameter('dir.downloads').'/sample.pdf'); return $this->file($samplePdf);