1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| <?php
use Slim\Slim; use Slim\Extras\Views; use Assetic\FilterManager; use Assetic\AssetWriter; use Assetic\Filter\CSSMinFilter; use Assetic\Factory\AssetFactory; use Assetic\Factory\LazyAssetManager; use Assetic\Factory\Worker\CacheBustingWorker; use Assetic\Extension\Twig\AsseticExtension; use Assetic\Extension\Twig\TwigFormulaLoader; use Assetic\Extension\Twig\TwigResource;
$filter_manger = new FilterManager(); $filter_manger->set('cssmin', new CSSMinFilter());
$asset_factory = new AssetFactory(PUBLIC_ROOT); $asset_factory->setDebug(false); $asset_factory->setFilterManager($filter_manger); $asset_factory->addWorker(new CacheBustingWorker(CacheBustingWorker::STRATEGY_CONTENT));
Views\Twig::$twigTemplateDirs = array(VIEWS_ROOT); Views\Twig::$twigOptions = array( 'charset' => 'utf-8', 'cache' => realpath(CACHE_ROOT.'/views'), 'auto_reload' => true, 'strict_variables' => false, 'autoescape' => true );
Views\Twig::$twigExtensions = array( 'Twig_Extensions_Slim', new AsseticExtension($asset_factory) );
$view_engine = new Views\Twig();
$asset_manger = new LazyAssetManager($asset_factory); $asset_manger->setLoader('twig', new TwigFormulaLoader($view_engine->getEnvironment()));
$templates = array(); $directories = array(VIEWS_ROOT); while (sizeof($directories)) { $directory = array_pop($directories);
foreach(glob($directory."/*") as $file_path) { if (is_dir($file_path) === true) { array_push($directories, $file_path); }elseif (is_file($file_path) === true && preg_match("/\.(html)$/", $file_path) == true) { $templates[] = str_replace(VIEWS_ROOT, '', $file_path); } } }
foreach ($templates as $template) { $resource = new TwigResource(new \Twig_Loader_Filesystem(VIEWS_ROOT), $template); $asset_manger->addResource($resource, 'twig'); }
$asset_writer = new AssetWriter(WWW_ROOT); $asset_writer->writeManagerAssets($asset_manger);
{% stylesheets output='public/asset/default.css' 'css/bootstrap.min.css' 'css/default.css' 'css/bootstrap-responsive.min.css' %} <link href="{{ asset_url }}" type="text/css" rel="stylesheet" /> {% endstylesheets %}
{% stylesheets output='public/asset/default.js' 'js/jquery.min.js' 'js/bootstrap.min.js' 'js/default.js' %} <script type="text/javascript" src="{{ asset_url }}"></script> {% endstylesheets %}
|