rudra / view
Rudra framework
v26.9.3
2026-08-04 13:07 UTC
Requires
- php: ^8.3
- rudra/container: v26.9.3
- rudra/docs: v26.9.3
- rudra/exception: v26.9.3
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Rudra-View | API
Install
composer require rudra/view
Using facade
use Rudra\View\ViewFacade as View; echo View::view('layout', [ 'content' => View::view('page', [ 'foo' => 'foo', 'bar' => 'bar' ]), ]);
With caching
use Rudra\View\ViewFacade as View; echo View::cache(['mainpage', '+1 day']) ?? View::render(['layout', 'mainpage'], [ 'content' => View::cache(["page_{$slug}", '+1 day']) ?? View::view(['page', "page_{$slug}"], [ 'foo' => 'foo', 'bar' => 'bar' ]), ]);
Using render, view helpers
render('layout', [ 'content' => view('page', [ 'foo' => 'foo', 'bar' => 'bar' ]), ]);
With setting data through the data helper
data([ 'content' => view('page', [ 'foo' => 'foo', 'bar' => 'bar' ]), ]); render('layout', data());
With caching
data([ 'content' => cache(["page_{$slug}", '+1 day']) ?? view(['page', "page_{$slug}"], [ 'foo' => 'foo', 'bar' => 'bar' ]), ]); cache(['mainpage', '+1 day']) ?? render(['layout', 'mainpage'], data());
Adding Twig
composer require 'twig/twig:^3.0'
Create factory:
<?php namespace App\Containers\Web\Factory; use Rudra\View\View; use Rudra\View\TwigView; use Rudra\Container\Interfaces\FactoryInterface; class TwigFactory implements FactoryInterface { public function create(): TwigView { $view = new TwigView(); $view->setup( viewPath: dirname(dirname(__DIR__)) . '/Web/UI/tmpl', prefix: '', extension: 'twig' ); return $view; } }
Configure service:
<?php use Rudra\View\View; use Rudra\View\TwigView; use App\Containers\Web\Factory\TwigFactory; return [ 'contracts' => [ ], 'services' => [ // View::class => function () { // $view = new TwigView(); // $view->setup( // viewPath: dirname(__DIR__) . '/Web/UI/tmpl', // prefix: '', // extension: 'twig' // ); // return $view; // } // View::class => fn() => (new TwigFactory())->create(), View::class => TwigFactory::class, ] ];
License
This project is licensed under the Mozilla Public License 2.0 (MPL-2.0) — a free, open-source license that:
- Requires preservation of copyright and license notices,
- Allows commercial and non-commercial use,
- Requires that any modifications to the original files remain open under MPL-2.0,
- Permits combining with proprietary code in larger works.
📄 Full license text: LICENSE
🌐 Official MPL-2.0 page: https://mozilla.org/MPL/2.0/