Новое в Symfony 3.2: File контроллер хелпер

Приветствую всех кто сюда попал, данный пост будет посвящен переводу первой заметки о нововведениях в 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);

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *