Допустим, я использую Webpack и правильно создал файл Css в «build/theme/mail.css». Я хочу включить СОДЕРЖИМОЕ этого файла в свою ветку.
{% include "https://mysite.io/build/theme/mail.css" %} не работает, говоря, что не может найти файл (но он существует).
I don't want that because im using an inliner, and absolutly need the #CONTENT in my twig.Да и не работает
Поместите файл CSS в папку просмотра, а затем включите
Я использую webpack, поэтому файл 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
Добавить путь ветки в общедоступный каталог
А затем используйте:
{% apply inline_css(source(theme_asset('@public/build/theme/email.css'))) %}
И добавьте webpackconfig для сборки файла scss в public/build
Спасибо вам всем.
Вы пробовали с source() ?