Я готовлю php библиотеку, которую я разработал индивидуально. Я использую assig для сжатия файлов twig, css и js для системы тем в библиотеке.
Если вы будете нести ответственность за знающих разработчиков; Не возникает проблема вывода статического файла при использовании GlobAsset или FileAsset. Я получаю сообщение об ошибке, когда использую веточку с фильтром. Два Я работал над этим в течение нескольких дней, но я не нашел решения.
Я делюсь с вами вашим исходным кодом, надеюсь, вы сможете помочь.
template.php
static::$fileSystem = new Twig_Loader_Filesystem();
static::$tpl = new Twig_Environment(static::$fileSystem, $configArr);
$am = new AssetManager();
$fm = new FilterManager();
$fm->set('cssrewrite', new CssRewriteFilter());
static::$factory = new AssetFactory('C:/WinNMP/WWW/bulk/css/');
static::$factory->setAssetManager($am);
static::$factory->setFilterManager($fm);
static::$factory->setDebug(true);
static::$factory->addWorker(new AssetVersionWorker('1.0.0'));
//static::$factory->addWorker(new CacheBustingWorker());
$am = new LazyAssetManager(static::$factory);
// enable loading assets from twig templates, caching the formulae
$am->setLoader('twig', new TwigCachingFormulaLoader(static::$tpl));
$templates = array($dir.self::HtmlDir.'/content.twig');
// loop through all your templates
foreach ($templates as $template) {
$resource = new TwigResource(static::$fileSystem, $template);
$am->addResource($resource, 'twig');
}
$writer = new PersistentAssetWriter(Config::get('cache.assets.frontend'));
$writer->writeManagerAssets($am);
static::$tpl->addExtension(new AsseticExtension(static::$factory));
header.twig
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
{% block head %}
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{title}}</title>
<meta name="language" content="tr" />
<meta name="keywords" content="{{settings.settingKeywords}}" />
<meta name="description" content="{{settings.settingDescription}}" />
<meta name="robots" content="index, follow, odp" />
<meta name="googlebot" content="index, follow, odp" />
<base href="{{settings.siteHostAdress}}/"/>
<link rel="shortcut icon" href="{{PIP('favicon.ico', 'site')}}">
{% block stylesheets %}
<link href="https://fonts.googleapis.com/css?family=Roboto+Condensed:300,300i,400,400i,700,700i" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Anton" rel="stylesheet">
{% stylesheets
'C:/WinNMP/WWW/bulk/css/*'
filter='cssrewrite'
output='css/all.css'
%}
<link href="{{ asset_url }}" type="text/css" rel="stylesheet" />
{% endstylesheets %}
{% endblock %}
<script type="text/javascript">
var settings = {{ settingsJson|json_encode() }};
</script>
{% endblock %}
Это ошибка:
Fatal error: Uncaught exception 'LogicException' with message 'Unable to register extension "assetic" as extensions have already been initialized.' in C:\WinNMP\WWW\bulk\Libs\vendor\twig\twig\lib\Twig\Environment.php:937 Stack trace: #0 C:\WinNMP\WWW\bulk\Kernel\Core\Template.php(118): Twig_Environment->addExtension(Object(Assetic\Extension\Twig\AsseticExtension)) #1 C:\WinNMP\WWW\bulk\Kernel\Interview\Frontview.php(94): Core\Template::addPath('c:/winnmp/www/b...') #2 C:\WinNMP\WWW\bulk\App\Interview\Frontface\PageNotFound.php(13): Interview\Frontview->__construct() #3 C:\WinNMP\WWW\bulk\Kernel\Rewrite.php(58): Frontface\PageNotFound->__construct() #4 C:\WinNMP\WWW\bulk\Kernel\App.php(26): Rewrite::requestMap() #5 C:\WinNMP\WWW\bulk\index.php(31): App::Run() #6 {main} thrown in C:\WinNMP\WWW\bulk\Libs\vendor\twig\twig\lib\Twig\Environment.php on line 937
Задача ещё не решена.
Других решений пока нет …