ride / lib-template
Template library of the Ride framework.
Installs: 4 419
Dependents: 17
Suggesters: 0
Security: 0
Stars: 0
Watchers: 8
Forks: 0
Open Issues: 0
Requires
- ride/lib-system: ^1.0.0
README
Template abstraction library of the PHP Ride framework.
What's In The Library
Engine
The implementation of Engine will implement the actual template engine through the Template interface. A template engine decides the features and the syntax (or language) to write in.
EngineModel
An EngineModel is an interface for the data store of the available template engines.
Theme
Optional support for template themes through the Theme interface. Each theme can implement it's own version of a template. This makes it possible to return a different representation of the same data.
A theme chooses the engines it's available in.
You can make a theme hierarchical by defining it's parent. This makes it easy to create subthemes and helps the engine to fallback when a resource could not be found.
ThemeModel
A ThemeModel is an interface for the data store of the available themes.
Template
A Template instance defines the resource and the variables to render the template. With a ThemedTemplate, you can specify a template in a specific theme.
The resource should be generic so it's not bound to a specific template engine. For example: use base/index instead of view/smarty/themes/bootstrap/base/index.tpl.
Code Sample
Check this code sample to get an idea of this library:
<?php use ride\library\template\engine\EngineModel; use ride\library\template\engine\ThemeModel; use ride\library\template\TemplateFacade; function foo(EngineModel $engineModel, ThemeModel $themeModel) { $resource = 'path/to/resource'; $variables = array('var1' => 'value1'); // template facade should be made available by your implementation $templateFacade = TemplateFacade($engineModel, $themeModel); $templateFacade->setDefaultEngine('smarty'); $templateFacade->setDefaultTheme('my-theme'); // a simple template rendering $template = $templateFacade->createTemplate($resource, $variables); $template->set('var2', 'value2'); $output = $templateFacade->render($template); // a template for a non-default theme $template = $templateFacade->createTemplate($resource, $variables, 'overriden-theme'); // a template for a non-default theme with a specific engine $template = $templateFacade->createTemplate($resource, $variables, 'overriden-theme', 'my-engine'); // get the file representation of a specific template $file = $templateFacade->getFile($template); // ride\library\system\file\File // get's the available template for a specific namespace $engine = null; $theme = null; $templates = $templateFacade->getFiles('path/to', $engine, $theme); echo $engine; // smarty echo $theme; // my-theme // reads the meta from the template comments in the beginning of the resource // syntax: [key: value([; key: value])*] // eg for Smarty: {* name: My Title; action: index *} // will return array('name' => 'My Title', 'action' => 'index') $meta = $templateFacade->getTemplateMeta($template); }
Implementations
For more examples, you can check the following implementations of this library:
- ride/lib-template-php
- ride/lib-template-smarty
- ride/lib-template-twig
- ride/app-template-php
- ride/app-template-smarty
- ride/app-template-twig
Installation
You can use Composer to install this library.
composer require ride/lib-template