Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/projek-xyz/slim-plates

Render your Slim 3 application views using Plates template engine.
https://github.com/projek-xyz/slim-plates

plates-templates slim-framework

Last synced: 3 months ago
JSON representation

Render your Slim 3 application views using Plates template engine.

Awesome Lists containing this project

README

        

[![VERSION](https://img.shields.io/packagist/v/projek-xyz/slim-plates.svg?style=flat-square)](https://github.com/projek-xyz/slim-plates/releases)
[![LICENSE](https://img.shields.io/packagist/l/projek-xyz/slim-plates.svg?style=flat-square)](LICENSE.md)
[![Actions Status](https://img.shields.io/github/workflow/status/projek-xyz/slim-plates/Tests/master?style=flat-square&logo=github-actions)](https://github.com/projek-xyz/slim-plates/actions)
[![Coveralls](https://img.shields.io/coveralls/projek-xyz/slim-plates/master.svg?style=flat-square&logo=coveralls)](https://coveralls.io/github/projek-xyz/slim-plates)
[![Code Climate](https://img.shields.io/codeclimate/coverage/projek-xyz/slim-plates.svg?style=flat-square&logo=code-climate)](https://codeclimate.com/github/projek-xyz/slim-plates/coverage)
[![Maintainability](https://img.shields.io/codeclimate/maintainability/projek-xyz/slim-plates?style=flat-square&logo=code-climate)](https://codeclimate.com/github/projek-xyz/slim-plates/maintainability)
[![SymfonyInsight Grade](https://img.shields.io/symfony/i/grade/daab7889-2745-4465-a1ef-6b7cecb2b0ac?style=flat-square&logo=symfony)](https://insight.symfony.com/projects/daab7889-2745-4465-a1ef-6b7cecb2b0ac)

# Plates Template Integration for Slim micro framework 3

Render your Slim 3 application views using Plates template engine.

## Install

Via [Composer](https://getcomposer.org/)

```bash
$ composer require projek-xyz/slim-plates --prefer-dist
```

Requires Slim micro framework 3 and PHP 5.5.0 or newer.

## Usage

```php
// Create Slim app
$app = new \Slim\App();

// Fetch DI Container
$container = $app->getContainer();

// Register Plates View helper:
// Option 1, using PlatesProvider
$container->register(new \Projek\Slim\PlatesProvider);

// Option 2, using Closure
$container['view'] = function ($c) {
$view = new \Projek\Slim\Plates([
// Path to view directory (default: null)
'directory' => 'path/to/views',
// Path to asset directory (default: null)
'assetPath' => 'path/to/static/assets',
// Template extension (default: 'php')
'fileExtension' => 'tpl',
// Template extension (default: false) see: http://platesphp.com/extensions/asset/
'timestampInFilename' => false,
]);

// Set \Psr\Http\Message\ResponseInterface object
// Or you can optionaly pass `$c->get('response')` in `__construct` second parameter
$view->setResponse($c->get('response'));

// Instantiate and add Slim specific extension
$view->loadExtension(new Projek\Slim\PlatesExtension(
$c->get('router'),
$c->get('request')->getUri()
));

return $view;
};

// Define named route
$app->get('/hello/{name}', function ($request, $response, $args) {
return $this->view->render('profile', [
'name' => $args['name']
]);
})->setName('profile');

// Run app
$app->run();
```

**NOTE**:
* If you are using _option 1_ please make sure you already have `$container['settings']['view']` in your configuration file.
* `Plates::setResponse()` is required to use `Plates::render()` otherwise `\LogicException` will thrown.

## Custom functions

This component exposes some Slim functions to your Plates templates.

### `pathFor()`

You can use this function to generate complete URLs to any Slim application named route. Example:

```php
layout('base-template') ?>

start('body') ?>

Hallo =$this->e($name)?>


=$this->pathFor('profile', ['name'=> $name])?>
stop() ?>
```

### `baseUrl($permalink = '')`

Retrieve the base url of your Slim application. Example:

```php
Some Link
```

Or you can pass a permalink

```php
Some Other Link
```

### `basePath()`

Retrieve the base url of your Slim application. Example:

```php

```

### `uriFull()`

Retrieve full request URI.

### `uriScheme()`

Retrieve the [scheme](https://tools.ietf.org/html/rfc3986#section-3.1) component of the URI.

### `uriHost()`

Retrieve the [host](http://tools.ietf.org/html/rfc3986#section-3.2.2) component of the URI

### `uriPort()`

Retrieve the [port](https://tools.ietf.org/html/rfc3986#section-3.2.3) component of the URI.

### `uriPath()`

Retrieve the [path](https://tools.ietf.org/html/rfc3986#section-3.3) component of the URI.

### `uriQuery()`

Retrieve the [query string](https://tools.ietf.org/html/rfc3986#section-3.4) component of the URI.

### `uriFragment()`

Retrieve the [fragment](https://tools.ietf.org/html/rfc3986#section-3.5) component of the URI.

## Contributing

Please see [CONTRIBUTING](.github/CONTRIBUTING.md) and [CONDUCT](.github/CONDUCT.md) for details.

## License

This library is open-sourced software licensed under [MIT license](LICENSE.md).