如何从视图中的资产输出内容?

时间:2015-06-12 13:58:42

标签: php symfony

我的Symfony2应用程序在服务器计算机上创建一个HTML文件,然后将其发送到wkhtmltopdf以从中生成CSS文件。此HTML文件也可通过浏览器访问。

文件中的CSS / JS路径是使用Symfony资产视图助手给出的,如下所示:

<link href="<?php echo $view['assets']->getUrl('bundles/mybundle/css/style.css') ?>" type="text/css" rel="stylesheet" />

在浏览器中查看文件时,此工作正常。但是,当我将文件传递给wkhtmltopdf时,路径不再正确,因为wkhtmltopdf在文件系统上运行而不是通过网络服务器(无论如何都无法正确访问)。

因此,我没有链接CSS文件,而是寻找将其嵌入HTML文件的方法,以便所有CSS都包含在文件中,并且wkhtmltopdf不需要查找CSS文件。

如何告诉Symfony将资产文件的内容而不是链接输出到视图中?

1 个答案:

答案 0 :(得分:0)

我找到的解决方法是读取控制器中的文件,然后将内容传递给视图。

所以在控制器中你有

    $styleFiles = [
        "bundles/mybundle/css/style.css",
        "bundles/mybundle/css/print.css"
    ];

    $style = "";

    foreach ($styleFiles as $file) {
        $style .= file_get_contents($this->get("kernel")->getRootDir() . "/../web/" . $file);
    }

现在您只需要在视图中为此添加输出:

<style type="text/css">
    <?= $style ?>
</style>