首页 > 解决方案 > 如果在 Symfony 4 中被后台进程调用,Twig 在服务中渲染找不到 CSS

问题描述

我有一个由 MessageHandler 和 Controller Action 调用的服务方法:

class ReceiptService
{
    public function myMethod()
    {
        // ...
        $html = $this->twig->render('folder/file.html.twig', []);
        // ...
    }
}

在我的树枝模板中,我调用了一些 CSS 文件:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>My title</title>

        <link rel="stylesheet" href="css/PDF/file.css">
    </head>
    <body>
        <!-- ... -->
    </body>
</html>

当我使用控制器动作时,树枝模板能够找到我的 CSS 文件。但是当它是调用它的 MessageHandler 时,它不会找到它,除非我把它放在public/每个 href 之前,eG

<link rel="stylesheet" href="public/css/PDF/file.css">`

我尝试使用{{ asset() }}但没有成功。

你知道为什么以及如何解决这个问题吗?

标签: symfony4assetsmessage-handlers

解决方案


尝试使用absolute_url

<link rel="stylesheet" href="{{ absolute_url(asset('css/PDF/file.css')) }}">

推荐阅读