Get support for smartive/SmartiveHandlebarsBundle
If you're new to LTH, please see our FAQ for more information on what it is we do.
Support Options
Unfortunately, there are currently no active helpers for this repository on the platform. Until they become available, we reccomend the following actions:
View Open IssuesTake a look to see if anyone else has experienced the same issue as you and if they managed to solve it.
Open an IssueMake sure to read any relevant guidelines for opening issues on this repo before posting a new issue.
Sponsor directlyCheck out the page and see if there are any options to sponsor this project or it's developers directly.
smartive/SmartiveHandlebarsBundle
SmartiveHandlebarsBundle
Bundle to integrate Handlebars templates into your Symfony2 / Symfony3 application.
This bundle renders handlebars with the help of xamin/handlebars.php.
Installation
Require the smartive/handlebars-bundle
package in your composer.json and update your dependencies.
{
…
"require": {
"smartive/handlebars-bundle": "dev-master"
}
…
}
Register the bundle in app/AppKernel.php
:
// app/AppKernel.php
public function registerBundles()
{
return array(
// ...
new Smartive\HandlebarsBundle\SmartiveHandlebarsBundle(),
);
}
Configuration
Some of the features can be configured in the smartive_handlebars
section of app/config/config.yml
.
Handlebars file extension
The default file extension for Handlebars files is set to .hbs
.
This can be overridden using the following setting (example file extension set to .handlebars
):
smartive_handlebars:
templating:
file_extension: .handlebars
Template directories
The template_directories
setting lets you define where to look for Handlebars templates.
You can use Symfony resource notation as well as absolute file paths to configure directories.
smartive_handlebars:
templating:
template_directories:
- '@AcmeDemo/Resources/views/Templates'
- /var/www/templates
By default, templates are getting search for in template directories recursively. You can disable this behaviour as follows:
smartive_handlebars:
templating:
template_directories_recursive: false
Twig extension
The Handlebars Twig extension is enabled by default. To disable it add this to your configuration:
smartive_handlebars:
twig:
enabled: false
Usage
Rendering service
The smartive_handlebars.templating.renderer
service offers a render($templateName, $data)
method which can be use to render Handlebars templates.
Twig
To render Handlebars templates in Twig you can use the Twig function handlebars(templateName, data)
.
Custom Handlebars helpers
You can add you own Handlebars helpers as tagged services by implementing the Handlebars\Helper
interface. To find out more about how to write custom helpers please have a look at the built-in helpers by xamin/handlebars.php.
Once you've implemented your own helper you have to register it as a service using the smartive_handlebars.helper
tag and an appropriate alias:
# app/config/services.yml
services:
demo_bundle.my_demo_helper:
class: DemoBundle\Helpers\MyDemoHelper
tags:
- { name: smartive_handlebars.helper, alias: myDemo }
You now can use your custom Handlebars helper inside your templates as follows:
{{#myDemo parameter}}
{{!-- do stuff --}}
{{/myDemo}}
Caching
The rendering service offers the ability to cache the parsed template between requests for faster rendering.
You can enable caching by setting smartive_handlebars.cache
to a existing cache service ID in your app/config/config.yml
:
smartive_handlebars:
cache:
enabled: true
service: <service-id>
There are several caching services / strategies available per default:
Disk
Service ID: smartive_handlebars.cache.disk
Uses Handlebars\Cache\Disk to read/write file cache in Symfony's cache directory
APC
Service ID: smartive_handlebars.cache.apc
Uses Handlebars\Cache\APC to read/write cache objects using APC
Redis
Service ID: smartive_handlebars.cache.redis
Uses PhpRedis or Predis to read/write cache objects using a Redis Server.
This bundle integrates with RedisBundle in order to make configuring your Redis implementation even easier.
The default Redis client being used is snc_redis.default
(see RedisBundle documentation).
The default configuration can be overridden looks as follows:
smartive_handlebars:
cache:
redis:
client_service: snc_redis.default
key_prefix: 'smartive-handlebars:'
Custom
You can also define your own caching services by adding a class which implements Handlebars\Cache. To use your custom cache service you have to register it in your service configuration:
# app/config/services.yml
services:
demo_bundle.my_demo_cache_service:
class: DemoBundle\Cache\CustomCache
# app/config/config.yml
smartive_handlebars:
cache: demo_bundle.my_demo_cache_service
Complete configuration example
# app/config/config.yml
smartive_handlebars:
templating:
enabled: true
file_extension: .hbs
template_directories:
- '@AcmeDemo/Resources/views/Templates'
- /var/www/templates
template_directories_recursive: true
twig:
enabled: true
cache:
enabled: false
service: smartive_handlebars.cache.redis
redis:
client_service: snc_redis.default
key_prefix: 'smartive-handlebars:'
Our Mission
We want to make open source more sustainable. The entire platform was born from this and everything we do is in aid of this.
From the Blog
Interesting Articles
-
Generating income from open source
Jun 23 • 8 min read
-
2023 State of OSS
Apr 23 • 45 min read ★
-
A funding experiment...
Aug 19 • 10 min read
-
But You Said I could
Aug 19 • 2 min read
Thank you for checking out LiveTechHelper |
2025 © lth-dev incorporated
p-e622a1a2