【发布时间】:2016-06-23 10:08:41
【问题描述】:
我正在使用 FOSJsRoutingBundle。我在 Twig 模板中链接文件如下:
<script type="text/javascript" src="{{asset('bundles/fosjsrouting/js/router.js') }}"></script>
<script type="text/javascript" src="{{ path('fos_js_routing_js', {"callback": "fos.Router.setData"}) }}"></script>
但是在使用 bundle KnpSnappyBundle 生成 pdf 文件时,我需要绝对指出前面的路线。通过使用 Symfony 2.3,我在使用资产的路径中进行了如下更改:
<script type="text/javascript" src="{{app.request.scheme ~ '://' ~ app.request.httpHost ~ asset('bundles/fosjsrouting/js/router.js') }}"></script>
我的问题是另一条路线给我这个捆绑包的错误。有没有其他的说法?我尝试将与上述相同的方法不起作用,并且使用url 而不是path 不起作用。
这是我遇到的错误:
The exit status code '1' says something went wrong:
stderr: "Loading pages (1/6)
[> ] 0%
[======> ] 10%
QSslSocket: cannot resolve SSLv3_client_method
QSslSocket: cannot resolve SSLv3_server_method
[=======> ] 13%
[==========> ] 18%
[==========================> ] 44%
[============================> ] 47%
[==============================> ] 50%
[==============================> ] 50%
[===========================================> ] 73%
[==============================================> ] 78%
[============================================================] 100%
Counting pages (2/6)
[============================================================] Object 1 of 1
Resolving links (4/6)
[============================================================] Object 1 of 1
Loading headers and footers (5/6)
Printing pages (6/6)
[> ] Preparing
[============================================================] Page 1 of 1
Done
Exit with code 1 due to network error: ContentNotFoundError
"stdout: ""
command: /opt/lampp/htdocs/Symfony/app/../vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64 --lowquality --page-size 'A4' --viewport-size '‘1024x768’' '/tmp/knp_snappy576ad837d24a82.40556276.html' '/tmp/knp_snappy576ad837d25009.94614572.pdf'.
这是控制器:
public function GenerarPdfFestivosAction()
{
$this->render(sprintf('BackendBundle:Festivos:calendario.pdf.twig'));
$em = $this->getDoctrine()->getManager();
$inicio =$em->getRepository('BackendBundle:Centro')->findInicioCurso();
$fin =$em->getRepository('BackendBundle:Centro')->findFinCurso();
$html = $this->renderView('BackendBundle:Festivos:calendario.html.twig', array(
'inicio' => $inicio,
'fin' => $fin,
));
return new Response(
$this->get('knp_snappy.pdf')->getOutputFromHtml($html),
200,
array(
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'attachment; filename="Calendario.pdf"'
)
);
}
感谢您的帮助。
【问题讨论】:
-
什么错误?为什么需要js路由来生成pdf?
-
你好@SylvainGuilbert,我需要在另一个中生成一个包含 Twig 模板的路由,以填充我需要的一些数据。获取 html,但使用此捆绑包将其转换为 pdf 也会给我的路线带来错误。在这个捆绑包中,您必须使用绝对路径,但仍然会出现错误,我想这将是因为
... / routing? Callback = fos.Router.setData包含路由。我在声明中添加的错误。在我的情况下,我添加了load另一个模板的内容,所以:$('container').load(Routing.generate('holidays_per_month', {id:month})); -
@SylvainGuilbert 你知道有没有办法把
path('fos_js_routing_js', {"callback": "fos.Router.setData"})放在其他地方?我真的不知道那条路线,但也许有更明确的指示。不知道是不是和我要生成的路线有关('holidays_per_month')。