+ public function registerBundles()
+ {
+ $bundles = array(
+ // ...
+ new Rapsys\PackBundle\RapsysPackBundle(),
+ );
+
+ // ...
+ }
+
+ // ...
+}
+```
+
+### Step 3: Configure the Bundle
+
+Setup configuration file `config/packages/rapsys_pack.yaml` with the following
+content available in `Resources/config/packages/rapsys_pack.yaml`:
+
+```yaml
+#Services configuration
+services:
+ #Replace assets.packages definition
+ assets.packages:
+ class: 'Symfony\Component\Asset\Packages'
+ arguments: [ '@rapsys_pack.path_package' ]
+ #Replace assets.context definition
+ assets.context:
+ class: 'Rapsys\PackBundle\Context\RequestStackContext'
+ arguments: [ '@request_stack', '%asset.request_context.base_path%', '%asset.request_context.secure%' ]
+ #Register assets pack package
+ rapsys_pack.path_package:
+ class: 'Rapsys\PackBundle\Package\PathPackage'
+ arguments: [ '/', '@assets.empty_version_strategy', '@assets.context' ]
+ public: true
+ #Register twig pack extension
+ rapsys_pack.pack_extension:
+ class: 'Rapsys\PackBundle\Extension\PackExtension'
+ arguments: [ '@service_container', '@rapsys_pack.intl_util', '@file_locator', '@rapsys_pack.path_package', '@rapsys_pack.slugger_util' ]
+ tags: [ 'twig.extension' ]
+ #Register intl util service
+ rapsys_pack.intl_util:
+ class: 'Rapsys\PackBundle\Util\IntlUtil'
+ public: true
+ #Register facebook event subscriber
+ Rapsys\PackBundle\Subscriber\FacebookSubscriber:
+ arguments: [ '@router', '%rapsys_air.locales%' ]
+ tags: [ 'kernel.event_subscriber' ]
+ #Register intl util class alias
+ Rapsys\PackBundle\Util\IntlUtil:
+ alias: 'rapsys_pack.intl_util'
+ #Register facebook util service
+ rapsys_pack.facebook_util:
+ class: 'Rapsys\PackBundle\Util\FacebookUtil'
+ arguments: [ '@router', '%kernel.project_dir%/var/cache', '%rapsys_pack.path%' ]
+ public: true
+ #Register facebook util class alias
+ Rapsys\PackBundle\Util\FacebookUtil:
+ alias: 'rapsys_pack.facebook_util'
+ #Register image util service
+ rapsys_pack.image_util:
+ class: 'Rapsys\PackBundle\Util\ImageUtil'
+ arguments: [ '@router', '@rapsys_pack.slugger_util', '%kernel.project_dir%/var/cache', '%rapsys_pack.path%' ]
+ public: true
+ #Register image util class alias
+ Rapsys\PackBundle\Util\ImageUtil:
+ alias: 'rapsys_pack.image_util'
+ #Register map util service
+ rapsys_pack.map_util:
+ class: 'Rapsys\PackBundle\Util\MapUtil'
+ arguments: [ '@router', '@rapsys_pack.slugger_util' ]
+ public: true
+ #Register map util class alias
+ Rapsys\PackBundle\Util\MapUtil:
+ alias: 'rapsys_pack.map_util'
+ #Register slugger util service
+ rapsys_pack.slugger_util:
+ class: 'Rapsys\PackBundle\Util\SluggerUtil'
+ arguments: [ '%kernel.secret%' ]
+ public: true
+ #Register slugger util class alias
+ Rapsys\PackBundle\Util\SluggerUtil:
+ alias: 'rapsys_pack.slugger_util'
+ #Register image controller
+ Rapsys\PackBundle\Controller\ImageController:
+ arguments: [ '@service_container', '@rapsys_pack.image_util', '@rapsys_pack.slugger_util', '%kernel.project_dir%/var/cache', '%rapsys_pack.path%' ]
+ tags: [ 'controller.service_arguments' ]
+ #Register map controller
+ Rapsys\PackBundle\Controller\MapController:
+ arguments: [ '@service_container', '@rapsys_pack.map_util', '@rapsys_pack.slugger_util', '%kernel.project_dir%/var/cache', '%rapsys_pack.path%' ]
+ tags: [ 'controller.service_arguments' ]
+ Rapsys\PackBundle\Form\CaptchaType:
+ arguments: [ '@rapsys_pack.image_util', '@rapsys_pack.slugger_util', '@translator' ]
+ tags: [ 'form.type' ]
+```
+
+Open a command console, enter your project directory and execute the following
+command to see default bundle configuration:
+
+```console
+$ php bin/console config:dump-reference RapsysPackBundle
+```
+
+Open a command console, enter your project directory and execute the following
+command to see current bundle configuration:
+
+```console
+$ php bin/console debug:config RapsysPackBundle
+```
+
+### Step 4: Use the twig extension in your Template
+
+You can use a template like this to generate your first `rapsys_pack` enabled
+template:
+
+```twig
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8" />
+ <title>{% block title %}Welcome!{% endblock %}</title>
+ {% stylesheet '//fonts.googleapis.com/css?family=Irish+Grover|La+Belle+Aurore' '@NamedBundle/Resources/public/css/{reset,screen}.css' '@Short/css/example.css' %}
+ <link rel="stylesheet" type="text/css" href="{{ asset_url }}" />
+ {% endstylesheet %}
+ </head>
+ <body>
+ {% block body %}{% endblock %}
+ {% javascript '@Short/js/*.js' %}
+ <script type="text/javascript" src="{{ asset_url }}"></script>
+ {% endjavascript %}
+ </body>
+</html>
+```
+
+### Step 5: Make sure you have local binary installed
+
+You need to have cpack and jpack scripts from https://git.rapsys.eu/packer/ repository
+set as executable and installed in /usr/local/bin.
+
+To install cpack and jpack required packages open a root console and execute the
+following command:
+
+```console
+# urpmi perl-base perl-CSS-Packer perl-JavaScript-Packer
+```
+
+or stone age distributions:
+
+```console
+# apt-get install libcss-packer-perl libjavascript-packer-perl
+```
+
+or other distributions through cpan:
+
+```console
+# cpan App::cpanminus
+# cpanm CSS::Packer
+# cpanm JavaScript::Packer
+```
+
+### Step 6: Create your own filter
+
+You can create you own mypackfilter class which call a mypack binary:
+
+```php
+<?php
+
+namespace Rapsys\PackBundle\Filter;