MOSS Twig bridge, (*1)
, (*2)
Adds Twig as template engine with additional functionalities:, (*3)
resource - simplifies usage of bundle resources, creates symlinks to bundle resources/assets (or if unable, copies them, this can be forced too)., (*4)
<script src="{% resource 'app:front:js:jquery.min.js' %}"></script>
Will create symlink to ./src/app/front/resource/js/jquery.min.js
from ./web/resource/app/front/js/jquery.min.js
.
Same applies to other files, as long as they are placed in bundles resource directory., (*5)
url - convenient router wrapper - {{ url('routeName', { here: "be", some: 'attributes' }) }}
., (*6)
translation - translation module, merging functionality from Twigs i18n extension and more sophisticated Pluralization from Sf2 Translator
., (*7)
{% trans with {'%name%': 'Michal'} "Hello %name%" %}
{% trans with {'%name%': 'Michal'} %}Hello %name%{% endtrans %}
{% transchoice count with {'%name%': 'Michal'} %}
{0} %name%, there are no apples|{1} %name%, there is one apple|]1,Inf] %name%, there are %count% apples
{% endtranschoice %}
with {....}
is optional and can be ommited, (*8)
formatting - for formatting values to their country specific formats, (*9)
{{ $value|number }} - formats $value as number
{{ $value|currency }} - formats $value as currency
{{ $value|time }} - formats $value (which must be a \DateTime object) as time
{{ $value|date }} - formats $value (\DateTime object) as date
{{ $value|dateTime }} - formats $value (\DateTime object) as date time
And of course, normal Twig extensions are also included., (*10)
To use it, just replace default view
component in bootstrap with:, (*11)
'view' => array(
'closure' => function (\Moss\Container\Container $container) {
$options = array(
'debug' => true,
'auto_reload' => true,
'strict_variables' => false,
'cache' => '../compile/'
);
$twig = new Twig_Environment(new Moss\Bridge\Loader\File(), $options);
$twig->setExtensions(
array(
new Moss\Bridge\Extension\Resource(),
new Moss\Bridge\Extension\Url($container->get('router')),
new Moss\Bridge\Extension\Trans(),
new Twig_Extensions_Extension_Text(),
)
);
$view = new \Moss\Bridge\View\View($twig);
$view
->set('request', $container->get('request'))
->set('config', $container->get('config'));
return $view;
}
)
For licence details see LICENCE.md, (*12)