Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wol-soft/twig-include-dir
Include all twig templates within a directory
https://github.com/wol-soft/twig-include-dir
directory extension include php php7 php8 recursive template twig
Last synced: 3 months ago
JSON representation
Include all twig templates within a directory
- Host: GitHub
- URL: https://github.com/wol-soft/twig-include-dir
- Owner: wol-soft
- License: mit
- Created: 2018-08-29T15:49:31.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-11-29T13:22:22.000Z (about 1 year ago)
- Last Synced: 2024-10-02T07:43:29.354Z (3 months ago)
- Topics: directory, extension, include, php, php7, php8, recursive, template, twig
- Language: PHP
- Homepage:
- Size: 25.4 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Latest Version](https://img.shields.io/packagist/v/wol-soft/twig-include-dir.svg)](https://packagist.org/packages/wol-soft/twig-include-dir)
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.2-8892BF.svg)](https://php.net/)
[![Build Status](https://github.com/wol-soft/twig-include-dir/actions/workflows/main.yml/badge.svg)](https://github.com/wol-soft/twig-include-dir/actions/workflows/main.yml)
[![Coverage Status](https://coveralls.io/repos/github/wol-soft/twig-include-dir/badge.svg?branch=master)](https://coveralls.io/github/wol-soft/twig-include-dir?branch=master)
[![MIT License](https://img.shields.io/packagist/l/wol-soft/twig-include-dir.svg)](https://github.com/wol-soft/twig-include-dir/blob/master/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](http://getcomposer.org):
```
$ 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
addTokenParser(new \TwigIncludeDir\IncludeDirTokenParser());/* ... */
```Afterwards you can start using the added token *includeDir* in your templates:
```twig
{% includeDir '/modals' %}
```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:
```twig
{% includeDir '/modals' recursive %}
```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](https://twig.symfony.com/doc/2.x/tags/include.html))
```twig
{# only the foo variable will be accessible #}
{% includeDir '/modals' recursive with {'foo': 'bar'} only %}
```