在 twig 中包含 CSS 文件的内容
Include content of CSS file in twig
假设我使用 Webpack,并在“build/theme/mail.css”.
处正确构建了一个 Css 文件
我想将此文件的内容包含到我的树枝中。
{% include "https://mysite.io/build/theme/mail.css" %}
无法找到文件(但它存在)。
我不想要那样,因为我使用的是内衬,并且我的树枝中绝对需要#CONTENT。
您可以创建自定义树枝扩展并使用file_get_contents.
分机:
<?php
namespace App\Twig;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
class GetPublicFileContentExtension extends AbstractExtension
{
/** @var string */
private $publicPath;
public function __construct(ParameterBagInterface $parameterBag)
{
$this->publicPath = $parameterBag->get('kernel.project_dir') . '/public/';
}
public function getFunctions(): array
{
return [
new TwigFunction('get_public_file_content', [$this, 'getPublicFileContent']),
];
}
public function getPublicFileContent(string $filepath)
{
return file_get_contents($this->publicPath . $filepath);
}
}
树枝:
{{ get_public_file_content('build/theme/mail.css') }}
尝试了文件获取内容,但没有用。找到解决方案:
twig:
paths:
'%kernel.project_dir%/public': public
将树枝路径添加到 public 目录
然后使用:
{% apply inline_css(source(theme_asset('@public/build/theme/email.css'))) %}
并添加一个 webpackconfig 以将 scss 文件构建到 public/build
谢谢大家
假设我使用 Webpack,并在“build/theme/mail.css”.
处正确构建了一个 Css 文件
我想将此文件的内容包含到我的树枝中。
{% include "https://mysite.io/build/theme/mail.css" %}
无法找到文件(但它存在)。
您可以创建自定义树枝扩展并使用file_get_contents.
分机:
<?php
namespace App\Twig;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
class GetPublicFileContentExtension extends AbstractExtension
{
/** @var string */
private $publicPath;
public function __construct(ParameterBagInterface $parameterBag)
{
$this->publicPath = $parameterBag->get('kernel.project_dir') . '/public/';
}
public function getFunctions(): array
{
return [
new TwigFunction('get_public_file_content', [$this, 'getPublicFileContent']),
];
}
public function getPublicFileContent(string $filepath)
{
return file_get_contents($this->publicPath . $filepath);
}
}
树枝:
{{ get_public_file_content('build/theme/mail.css') }}
尝试了文件获取内容,但没有用。找到解决方案:
twig:
paths:
'%kernel.project_dir%/public': public
将树枝路径添加到 public 目录
然后使用:
{% apply inline_css(source(theme_asset('@public/build/theme/email.css'))) %}
并添加一个 webpackconfig 以将 scss 文件构建到 public/build
谢谢大家