This library provides a custom view for the Slim Framework to support the Plates template engine.
Add the provider to your composer.json
file:
{
"require": {
"media32/slim-view-plates": "3.*"
}
}
Enable it in your application
<?php
$view = new \Media32\Slim\View\Plates();
$app = new \Slim\Slim(array(
'view' => $view
));
Set $view->fileExtension
to the file extension used for all templates.
By default Plates expects the extension to be .php
.
Set $view->templatesPath
to the location of the templates.
By default Slim-View-Plates will use the Slim templates.path configuration value. This setting allows you to override that value for only the Plates templates.
Add to the $view->templatesFolders
array, where the key is the name of the
folder and the value is the path.
You can access Slim's URL functions inside templates by hooking up the view extension:
$view->parserExtensions = array(
new \Media32\Slim\View\PlatesExtension()
);
Inside your Plates template you would write:
<?= $this->slim()->urlFor('hello', array('name' => 'Josh', 'age' => '19')); ?>
You can easily pass variables that are objects or arrays by doing:
<a href="<?= $this->slim()->urlFor('hello', array('name' => $person->name, 'age' => $person->age)) ?>">Hello <?= $name; ?></a>
If you need to specify the appname for the getInstance method in the urlFor functions, set it as the third parameter of the function in your template:
<a href="<?= $this->slim()->urlFor('hello', array('name' => $person->name, 'age' => $person->age), 'admin') ?>">Hello <?= $name; ?></a>
Inside your Plates template you would write:
<?= $this->slim()->siteUrl('/about/me'); ?>
Inside your Plates template you would write:
<?= $this->slim()->baseUrl(); ?>
Inside your plates template you would write:
<? $this->slim()->getInstance('appname'); ?>
To access the Plates engine object for further customization, including loading
extensions, call $view->getInstance()
.