PHPackages                             rnr1721/le7-view-twig - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. rnr1721/le7-view-twig

ActiveLibrary[Framework](/categories/framework)

rnr1721/le7-view-twig
=====================

Twig view adapter for le7 PHP MVC framework or any PHP PSR project

1.1.1(2y ago)0581MITPHPPHP &gt;=8.1

Since Apr 23Pushed 2y ago1 watchersCompare

[ Source](https://github.com/rnr1721/le7-view-twig)[ Packagist](https://packagist.org/packages/rnr1721/le7-view-twig)[ RSS](/packages/rnr1721-le7-view-twig/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (13)Versions (13)Used By (1)

Simple Twig view class for le7 framework or any PSR PHP project
===============================================================

[](#simple-twig-view-class-for-le7-framework-or-any-psr-php-project)

Requirements
------------

[](#requirements)

- PHP 8.1 or higher.
- Composer 2.0 or higher.

What it can?
------------

[](#what-it-can)

- Configure twig (set many options as delimiters, etc)
- Render .twig templates using Twig template engine
- Use PSR SimpleCache for caching page

Installation
------------

[](#installation)

```
composer require rnr1721/le7-view-twig
```

Testing
-------

[](#testing)

```
composer test
```

How it works?
-------------

[](#how-it-works)

```
use Core\Interfaces\ViewTopologyInterface;
use Core\Interfaces\ViewAdapterInterface;
use Core\Interfaces\TwigConfigInterface;

use Core\View\AssetsCollectionGeneric;
use Core\View\WebPageGeneric;
use Core\View\ViewTopologyGeneric;
use Core\View\Twig\TwigAdapter;
use Core\View\Twig\TwigConfigGeneric;

use Psr\SimpleCache\CacheInterface;
use Psr\Log\LoggerInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestFactoryInterface;
use Psr\Http\Message\ResponseFactoryInterface;
use Psr\Http\Message\ServerRequestInterface;

        // At first we need create or have this:
        // ServerRequestInterface
        // $request = ...
        // ResponseFactoryInterface
        // $responseFactory = ...
        // CacheInterface
        // $cache = ...
        // LoggerInterface
        // $logger = ...

        $twigConfig = new TwigConfigGeneric();
        $twigConfig->setCacheDir('/path-to-cache');
        $twigConfig->setAutoEscape('html');
        $twigConfig->setDebug(true);
        $twigConfig->setAutoReload(true);
        // $twigConfig->.... Set other Twig settings here

        $viewTopology = new ViewTopologyGeneric();
        $viewTopology->setBaseUrl('https://example.com')
                // Set urls for access with {$js}, {$css}, {$fonts}, {$theme} etc
                ->setCssUrl('https://example.com/css')
                ->setFontsUrl('https://example.com/fonts')
                ->setImagesUrl('https://https://example.com/images')
                ->setJsUrl('https://example.com/js')
                ->setLibsUrl('https://example.com/libs')
                ->setThemeUrl('https://example.com/theme')
                // Set template directories
                ->setTemplatePath([
                                '/home/www/mysite/templates',
                                '/home/www/mysite/templates2'
                            ]}

        // We can declare some styles if need
        // We will can use it as single-usage or as collections
        $styles = [
            'bootstrap5' => 'https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css'
        ];

        // And some scripts
        $scripts = [
            'axios' => 'https://cdnjs.cloudflare.com/ajax/libs/axios/1.4.0/axios.min.js',
            'jquery' => 'https://code.jquery.com/jquery-3.7.0.min.js',
            'vuejs' => 'https://cdn.jsdelivr.net/npm/vue@2.7.8/dist/vue.js',
            'bootstrap5' => 'https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.min.js'
        ];

        $ac = new AssetsCollectionGeneric($scripts, $styles);
        $ac->setScript('myscript', 'url');
        // We can add scripts by hands, not in array
        $ac->setStyle('mystyle', 'mystyleurl');
        // Create new collection of assets
        $ac->setCollection('standard', ['bootstrap5', 'jquery', 'myscript'], ['axios'], ['bootstrap5', 'mystyle']);

        // After creating Assets collection we can create something like this:
        // $webPage->applyAssetsCollection('standard') for example in controller;

        // WebPage object what epresents web page
        $webPage = new WebPageGeneric($viewTopology, $ac);
        // Set style from CDN
        $webPage->setStyleCdn("https://cdn.example.com/style.css");
        // Set style from /libs
        $webPage->setStyleLibs("mystyle.css");
        // Set style from theme folder
        $webPage->setStyle('mystyle.css');

        // Set script from CDN
        $webpage->setScriptCdn("https://cdn.example.com/script.js");
        // Set script from libs folder
        $webpage->setScriptLibs("myscript.js");
        // Set script from theme folder
        $webPage->setScript("jquert/jquery.min.js");
        // Set script from theme folder for footer
        $webPage->setScript("jquert/jquery.min.js", false);

        $webPage->setPageTitle("My page Title");
        $webPage->setKeywords(["one","two","three"]);
        $webPage->setKeywords("four");
        $webPage->setKeywords("six,seven");

        // Why? Now we will can use in our Twig template that variables:
        // {{ base }},{{ js }},{{ css }},{{ fonts }},{{ images }},{{ theme }},{{ libs }} - URL Path for folders
        // {{ scripts_header }}, {{ scripts_footer }}, {{ styles }}, {{ importmap }}
        // {{ title }}, {{ keywords }}, {{ header }}, {{ description }} etc...

        // Get the Twig adapter (Core\Interfaces\ViewAdapterInterface)
        $viewAdapter = new TwigAdapter($twigConfig, $viewTopology, $webPage, $request, $response, $cache, $logger);

        // Get the view (Core\Interfaces\ViewInterface)
        // Also, you can overwrite here template paths and ResponseInterface
        $view = $view->getView();

        // Now we can use View
        $vars = [
            'one' => 'one var',
            'two' => 'two var'
            ];

        $view->assign('three', 'three var');

        // Set the layout, variables, response code, headers, cache ttl in sec
        // $response is Psr\Http\Message\ResponseInterface
        $response = $view->render("layout.tpl", $vars, 200, [], 0);

        // Now we can use PSR $response
        $response->getStatusCode();
        $response->getBody()
```

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~20 days

Recently: every ~51 days

Total

12

Last Release

891d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b056f4160d8f9302378726a35860b42bfa67c29760bb55fcacddfde2bfa6f6ac?d=identicon)[rnr1721](/maintainers/rnr1721)

---

Top Contributors

[![rnr1721](https://avatars.githubusercontent.com/u/122087344?v=4)](https://github.com/rnr1721 "rnr1721 (1 commits)")

---

Tags

frameworktwigviewcomponentle7le7-framework

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Type Coverage Yes

### Embed Badge

![Health badge](/badges/rnr1721-le7-view-twig/health.svg)

```
[![Health](https://phpackages.com/badges/rnr1721-le7-view-twig/health.svg)](https://phpackages.com/packages/rnr1721-le7-view-twig)
```

###  Alternatives

[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[slim/twig-view

Slim Framework 4 view helper built on top of the Twig 3 templating component

3708.0M210](/packages/slim-twig-view)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
