jelix / castor
A template engine using a simple syntax
Installs: 2 924
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 1
Open Issues: 2
Requires
- php: >=5.3
- jelix/simplelocalization: 1.7.1
Requires (Dev)
- phpunit/phpunit: 4.3.*
This package is auto-updated.
Last update: 2021-02-13 02:32:12 UTC
README
Castor is a template engine for PHP, using syntax similar to PHP.
Features
- A simple Api to inject data and to generate content
- A language with a syntax similar to PHP, but a bit simpler to ease learning
- Templates can be a file or a simple string
- Efficient generator: template files are "compiled" to PHP files
- A sandbox mode, to fetch untrusted templates (templates uploaded by a user in a CMS for example). This mode has less capabilities of course.
- A plugin system, similar to Smarty plugins.
- Plugins can be specific to a content type (HTML, XML, text…), so they produced right content.
- a system of “meta”: allow the template to expose data to PHP code. For example, a "meta" can be a url of a stylesheet to use with the generated content.
History
Castor was formerly known as jTpl and was used in the Jelix Framework since 2006. There was a specific version, "jTpl standalone", existing for years to use jTpl without Jelix, but it was never released as a stable version.
In 2015, jTpl was completely "extracted" from Jelix (starting to Jelix 1.7), and is now available as a standalone component under the name "Castor", with true stable releases.
installation
You can install it from Composer. In your project:
composer require "jelix/castor"
Usage
A template file:
<h1>{$titre|upper}</h1>
<ul>
{foreach $countries as $country}
<li>{$country|eschtml} ({$country|count_characters})</li>
{/foreach}
</ul>
The PHP code:
// directory where compiled templates are stored $cachePath = realpath(__DIR__.'/temp/') . '/'; // directory where templates can be found $templatePath = __DIR__.'/'; // create a configuration object. See its definition to learn about all of its options $config = new \Jelix\Castor\Config($cachePath, $templatePath); // let's create a template engine $tpl = new \Jelix\Castor\Castor($config); // assign some values, so they will be available for the template $countries = array('France', 'Italie', 'Espagne', 'Belgique'); $tpl->assign('countries', $countries); $tpl->assign('titre', 'This is a test !'); // content is generated from the given template file and returned $content = $tpl->fetch('test.tpl'); // or content is generated from the given template file and sent directly to the browser $tpl->display('test.tpl');
To know more, see the docs/ directory.