rest - 如何正确地将视图处理程序添加到 fosrestbundle 以返回文件
问题描述
检查这个帖子和另一个帖子,我还检查了我想出了这个配置的捆绑包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:
类型错误:传递给 FOS\RestBundle\Controller\TemplatingExceptionController::__construct() 的参数 1 必须实现接口 FOS\RestBundle\View\ViewHandlerInterface,给定 AppBundle\View\CsvViewHandler 的实例,在 /var/www/sicocme-emed- 中调用第 14 行的 api/var/cache/dev/ContainerDztemfl/getFosRest_Exception_TwigControllerService.php
解决方案
推荐阅读
- apache - 域重定向 Apache htaccess
- c# - 使用实体框架的主键(数据库优先)
- python - 如何在opencv中显式访问mjpeg后端进行视频捕获
- javascript - 复制到剪贴板时如何删除一个空的新行?
- python-3.x - 从python中的数据框中提取某种语言的字符串
- r - 只要一个组包含某些值,如何过滤数据?
- uwp - 使用 TimeTrigger 运行后台任务的最长时间
- python - quadpy IntegrationError: 给定的 max_num_subintervals (= 50) 无法达到公差 (abs: 1.49e-08, rel: 1.49e-08)
- python - 如何在 PyQt5 中正确使用 QOpenGLBuffer 的分配/读/写?
- python - 多个 Y 轴比例不同的堆叠水平图