Пример кода, реализующий endpoint скачиваемого файла.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<?php namespace Drupal\data_exchange\Controller; use Drupal\Core\Controller\ControllerBase; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; /** * File Download */ class FileExport extends ControllerBase { public function getFile(Request $request) { $content = 'Содержимое вашего файла'; $response = new Response(); // заголовки // для xml или текста подойдут следующие, // иначе меняйте по ситуации $response->headers->set('Pragma', 'no-cache'); $response->headers->set('Content-type', 'text/plain; charset=UTF-8'); $response->headers->set('Content-Disposition', 'attachment; filename="filename.txt"'); $response->headers->set('Content-Transfer-Encoding', 'binary'); $response->headers->set('Cache-control', 'private'); $response->headers->set('Content-length', strlen($content)); $response->setContent($content); return $response; } } |
Кроме контроллера, вам потребуется еще задать маршрут. Пример описания маршрута:
1 2 3 4 5 6 |
mymodule.download_file: path: '/downloadFilePath.xml' defaults: _controller: '\Drupal\mymodule\Controller\FileExport::getFile' requirements: _permission: 'access content' |