Проверка этот пост и этот другой пост , также я проверил комплект RssExample Я придумал этот конфиг:
Под fos_rest
format_listener:
enabled: true
rules:
- { path: ^/service/export-to-csv, priorities: [ csv,json ], fallback_format: json, prefer_extension: false }
- { path: ^/, priorities: [ json ], fallback_format: json, prefer_extension: true }
exception:
enabled: true
serializer:
serialize_null: true
service:
view_handler: app.view_handler.csv
В рамках услуг
app.view_handler.csv:
class: AppBundle\View\CsvViewHandler
app.view_handler:
parent: fos_rest.view_handler.default
public: true
autowire: true
autoconfigure: false
calls:
- ['registerHandler', ['csv', ["@app.view_handler.csv",'createResponse'] ] ]
Класс обработчика
namespace AppBundle\View;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Csv;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use FOS\RestBundle\View\View;
use FOS\RestBundle\View\ViewHandler;
class CsvViewHandler
{
public function createResponse(ViewHandler $handler, View $view, Request $request, $format)
{
$spreadSheet = new Spreadsheet();
$spreadSheet->getActiveSheet()->getCell('A1')->setValue('CSV DOWNLOAD EXAMPLE');
$csv = new Csv($spreadSheet);
return new Response($csv, 200, $view->getHeaders());
}
}
Идея состоит в том, что все данные, отправленные в запросе к / service / export-to-csv, обрабатываются и возвращаются в виде файла .csv. Но проблема в том, что я все еще получаю эту FatalThrowableError :
Ошибка типа: аргумент 1 передан
FOS \ RestBundle \ Controller \ TemplatingExceptionController :: __ конструкт ()
должен реализовывать интерфейс FOS \ RestBundle \ View \ ViewHandlerInterface,
данный экземпляр AppBundle \ View \ CsvViewHandler, вызываемый в
/var/www/sicocme-emed-api/var/cache/dev/ContainerDztemfl/getFosRest_Exception_TwigControllerService.php
по линии 14