Skip to content

wol-soft/twig-include-dir

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Latest Version Minimum PHP Version Build Status Coverage Status MIT License

twig-include-dir

Include all twig templates within a directory

Features

  • Provide a directory with multiple .twig templates and all templates will be included
  • Add recursive keyword to include all templates within a directory recursive
  • known variable handling as known from include using the keywords only and with

Requirements

  • Requires Twig >= 2.7
  • Requires PHP >= 7.2

Installation

The recommended way to install twig-include-dir is through Composer:

$ composer require wol-soft/twig-include-dir

Why?

An example use case could be: you set up a site using bootstrap with many modals. Now you don't need to throw all your modals together in a file or include each modal manually but instead you can separate your modals by using one file for each modal. Throw all modals in a modal-directory and simply include the whole directory. Adding a new modal? No problem, just create a new template file in your modal-directory.

Getting started

To use twig-include-dir you need to add the include-dir token parser to your Twig Environment first:

<?php

/* ... */

$loader = new FilesystemLoader(__DIR__ . DIRECTORY_SEPARATOR);
$twig = new Environment($loader);
$twig->addTokenParser(new \TwigIncludeDir\IncludeDirTokenParser());

/* ... */

Afterwards you can start using the added token includeDir in your templates:

<div class="modal-container">
    {% includeDir '/modals' %}
</div>

The files in the directory will be included alphabetically.

Recursive usage

To include all files within a given directory recursive simply add the keyword recursive to your include statement:

<div class="modal-container">
    {% includeDir '/modals' recursive %}
</div>

Now also the modals from the directories /modals/user and /modals/system etc. will be included.

Caution: The templates will be included alphabetically as well, including the directories. Thus the template /modals/footer.twig will be included before the templates from the directory /modals/system followed by /modals/user followed by a possible /modals/zebraHeader.twig. It is recommended to use twig-include-dir only for templates which do not require a specific order.

Variables

As known from the Twig Core include you can control the available variables with the keywords with and only (compare: include)

<div class="modal-container">
    {# only the foo variable will be accessible #}
    {% includeDir '/modals' recursive with {'foo': 'bar'} only %}
</div>