rvanginneken / asset-bundle
Include assets at any point, which are cached and injected at the end of head or body.
Installs: 1 374
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 1
Forks: 1
Open Issues: 2
Requires
- php: >=7.1
- symfony/cache: >=3.1
- symfony/config: >=2.8
- symfony/dependency-injection: >=2.8
- symfony/http-kernel: >=2.8
- symfony/security: >=2.8
- twig/twig: >=2.4
README
The AssetBundle makes it easy to include assets at any point in your twig files and render it at the end of the <head> and <body> tags in the page. No blocks needed. Stylesheets are printed inline and all results are cached in production, following Symfony's cache.app settings.
In debug mode, actual assets are served. In no-debug mode, files are copied to public/asset_cache with unique naming. The directory is automatically cleared with the cache:clear command. Using unique file names guarantees browser cache busting when the application cache is cleared.
Installation
Require the bundle with composer:
$ composer require rvanginneken/asset-bundle
Enable the bundle in the config/bundles.php
(use AppKernel.php
before symfony 4):
return [ // .. RVanGinneken\AssetBundle\RVanGinnekenAssetBundle::class => ['all' => true], // .. ];
Ignore the asset cache directory (used to bust browser cache). Put the following in your .gitignore
(use web
before symfony 4):
# ..
/public/asset_cache/
# ..
That's it.
Usage
Note: priorities are optional and are only added to these examples to show their availability.
Include a stylesheet:
{% asset 'css_file', 'css/hello_world.css', 0 %}
Include inline style:
{%- set inline_style_hello_world -%} <style> body { background-color: lightblue; } </style> {%- endset -%} {% asset 'css', inline_style_hello_world, 0 %}
Include a javascript file:
{% asset 'javascript_file', 'js/hello_world.js', 0 %}
Include inline javascript:
{%- set inline_javascript_hello_world -%} <script type="text/javascript"> console.log('Hello world!'); </script> {%- endset -%} {% asset 'javascript', inline_javascript_hello_world, 0 %}
Public folder
The bundle detects the public folder based on the symfony version. If you're using something custom you can override it by using:
rvanginneken_asset:
public_folder: your_custom_folder