PHPackages                             phpsoftbox/view - 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. [Templating &amp; Views](/categories/templating)
4. /
5. phpsoftbox/view

ActiveLibrary[Templating &amp; Views](/categories/templating)

phpsoftbox/view
===============

Simple PHP view renderer for the PhpSoftBox framework

077↑12.5%PHP

Since Mar 24Pushed 1mo agoCompare

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

READMEChangelogDependenciesVersions (1)Used By (0)

View
====

[](#view)

`phpsoftbox/view` — PHP/PHTML renderer с поддержкой:

- array payload
- DTO payload через `ViewDataInterface`
- `ViewContext` (layout, partial, meta/css/js)

Contents
--------

[](#contents)

- [Quick Start](#quick-start)
- [Payload Types](#payload-types)
- [render()](#render)
- [partialRender()](#partialrender)
- [renderWithContext()](#renderwithcontext)
- [partialRenderWithContext()](#partialrenderwithcontext)
- [ViewContext API](#viewcontext-api)
- [Helpers](#helpers)

Quick Start
-----------

[](#quick-start)

```
use PhpSoftBox\View\PhpViewRenderer;

$renderer = new PhpViewRenderer(
    basePath: __DIR__ . '/resources/views',
    sharedData: [
        'appName' => 'Demo',
    ],
);

echo $renderer->render('error.phtml', [
    'status' => 500,
    'message' => 'Internal error',
]);
```

Payload Types
-------------

[](#payload-types)

`ViewRendererInterface` принимает:

- `array`
- `ViewDataInterface`

Для DTO payload объект должен реализовывать `ViewDataInterface`.

### DTO example

[](#dto-example)

```
use PhpSoftBox\View\ViewDataInterface;

final readonly class UserCardView implements ViewDataInterface
{
    public function __construct(
        public string $name,
        public string $email,
    ) {
    }
}
```

render()
--------

[](#render)

`render(string $template, array|ViewDataInterface $data = []): string`

Назначение:

- full render
- сначала рендерит template
- если в `ViewContext` установлен layout, оборачивает content в layout

### render() with array payload

[](#render-with-array-payload)

```
echo $renderer->render('user/show.phtml', [
    'name' => 'Anton',
]);
```

`user/show.phtml`:

```
