Introduction
Windwalker Renderer is a template engine adapters to easily render template files for different engines with same interface.
Support Engines
- PHP
- Twig
- Blade
- Edge (A Blade compitable engine without dependencies)
- Mustache
- Plates
Installation
Install via composer
bash
composer require windwalker/renderer ^4.0
Use in Windwalker
By default, windwalker-starter
will install renderer
as dependency.
You can render a template by RendererService
:
php
use Windwalker\Core\Renderer\RendererService;
$rendererService = $app->service(RendererService::class);
$rendererService->render('foo.bar'); // Will auto detect template file type
Use as Standalone Component
Getting Started
The basic PHP renderer is PlatesRenderer
, which is an adapter of league/plates:
php
use Windwalker\Renderer\PlatesRenderer;
$renderer = new PlatesRenderer(
[
// Required
'base_dir' => '/path/to/tmpl'
]
);
// Make a template callback
$template = $renderer->make('flower/sakura'); // Will load `/path/to/tmpl/flower/sakura.phtml`
// Render it
echo $template(['foo' => 'bar']);
// You can render it again with different data
echo $template(['foo' => 'goo']);
Directly render:
php
echo $renderer->render('flower/sakura', ['foo' => 'bar']);
Extends Template Engine
In Windwalker 4, Renderer on-longer keep the paths and leave engine to handle it.
Use extends to configure template engine before rendering:
php
$renderer->extend(
function (\League\Plates\Engine $engine) {
$engine->setDirectory('/another/tmpl/path');
return $engine;
}
);
Custom Engine Builder
If you want to create your own engine, use setEngineBuilder()
:
php
$renderer->setEngineBuilder(
function () {
return new \League\Plates\Engine('/path/to/templates');
}
);