This repository has been archived on 2024-06-20. You can view files and clone it, but cannot push or open issues or pull requests.
peryoudow/vendor/league/plates/docs/engine/index.md
2020-01-06 14:23:12 +01:00

1.6 KiB

layout permalink title
default engine/ The Engine

The Engine

Plates uses a central object called the Engine, which is used to store the environment configuration, functions and extensions. It helps decouple your templates from the file system and other dependencies. For example, if you want to change the folder where your templates are stored, you can do so by simply changing the path in one location.

Basic usage

// Create new Plates engine
$templates = new League\Plates\Engine('/path/to/templates');

// Add any any additional folders
$templates->addFolder('emails', '/path/to/emails');

// Load any additional extensions
$templates->loadExtension(new League\Plates\Extension\Asset('/path/to/public'));

// Create a new template
$template = $templates->make('emails::welcome');

Dependency Injection

Plates is designed to be easily passed around your application and easily injected in your controllers or other application objects. Simply pass an instance of the Engine to any consuming objects, and then use either the make() method to create a new template, or the render() method to render it immediately. For example:

class Controller
{
    private $templates;

    public function __construct(League\Plates\Engine $templates)
    {
        $this->templates = $templates;
    }

    // Create a template object
    public function getIndex()
    {
        $template = $this->templates->make('home');

        return $template->render();
    }

    // Render a template directly
    public function getIndex()
    {
        return $this->templates->render('home');
    }
}