maskulabs/inertia-psr
最新稳定版本:v3.0.0+1
Composer 安装命令:
composer require maskulabs/inertia-psr
包简介
PSR-based Inertia helpers and middleware integration for PHP applications
README 文档
README
A framework-agnostic, PSR-based server-side adapter for Inertia.js v3.
inertia-psr provides a PSR-friendly implementation of the Inertia server protocol for PHP applications. It is designed to stay closely aligned with the official Inertia.js v3 documentation:
Features
- PSR-oriented Inertia server implementation
- HTML and JSON Inertia responses
- Shared props support
- Flash data support
- Partial reload support
- Deferred and optional props
- Merge and deep merge metadata
- Once-resolved props with expiration metadata
- Infinite scroll metadata support
- Middleware for core Inertia handling
- Optional SSR integration over HTTP
Requirements
This package is designed for PSR-based PHP applications and expects integrations around:
- PHP 8.5+
- PSR-7 HTTP messages
- PSR-15 middleware
- PSR-17 factories
- a session / flash implementation compatible with the package interfaces
Installation
Install the package with Composer:
composer require maskulabs/inertia-psr
What this package provides
inertia-psr focuses on the server-side Inertia protocol and response generation.
It does not provide:
- a frontend application
- asset bundling
- framework-specific routing
- framework-specific dependency injection setup
- a built-in session implementation
- a built-in Vite integration
Quick start
<?php use MaskuLabs\InertiaPsr\InertiaInterface; use Psr\Http\Message\ResponseInterface; final readonly class DashboardAction { public function __construct( private InertiaInterface $inertia, ) {} public function __invoke(): ResponseInterface { return $this->inertia->render('Dashboard', [ 'stats' => [ 'users' => 120, 'sales' => 54, ], ]); } }
This returns an Inertia response for the Dashboard page component.
In a real application, you will typically also:
- register the package middleware in your PSR-15 middleware stack
- configure a root view for HTML responses
- include your frontend assets in that root view
Configuring the root view
You can configure the root view globally:
<?php $inertia->setRootView(__DIR__ . '/views/app.php');
You can also set it per response:
<?php return $this->inertia ->render('Dashboard') ->rootView(__DIR__ . '/views/app.php');
Root HTML template
Your root view is the HTML shell used for the initial browser visit.
It should:
- render the serialized Inertia page data
- provide the frontend mount element
- include your frontend JavaScript assets
Example:
<?php /** @var array $page */ ?> <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>My App</title> <!-- Include frontend assets here: use the built JavaScript file in production, or @vite/client + your app entry script during development. --> </head> <body> <script type="application/json" data-page="app"> <?php echo json_encode($page, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); ?> </script> <div id="app"></div> </body> </html>
The exact asset tags depend on your frontend tooling and framework integration.
Common usage
Share data
<?php $inertia->share('app.name', 'My App'); $inertia->share('auth.user', [ 'id' => 1, 'name' => 'Jane Doe', ]);
Set asset version
<?php $inertia->version('build-hash');
Flash data
<?php $inertia->flash('success', 'Profile updated successfully.');
Redirect back
<?php return $inertia->back();
Inertia location response
<?php return $inertia->location('/login');
Advanced props
The package supports advanced Inertia prop behavior, including:
always()optional()defer()merge()deepMerge()once()shareOnce()scroll()
Example:
<?php use MaskuLabs\InertiaPsr\Props\ScrollProp\ScrollMetadata; return $inertia->render('Users/Index', [ 'users' => $inertia->scroll( value: fn() => [ ['id' => 1, 'name' => 'Jane'], ['id' => 2, 'name' => 'John'], ], metadata: new ScrollMetadata( pageName: 'page', previousPage: null, nextPage: 2, currentPage: 1, ), ), 'stats' => $inertia->defer( fn() => ['active' => 42], 'sidebar', ), 'permissions' => $inertia->once( fn() => ['users.read', 'users.write'], ), ]);
Middleware and SSR
The package includes support for:
- core Inertia middleware
- history encryption middleware
- optional SSR middleware
- HTTP SSR gateway integration
To use the full Inertia request / response flow correctly, register the package middleware in your PSR-15 middleware stack.
Framework-specific wiring may differ, so see the integration examples for concrete setups.
Framework integrations
See the docs directory for complete integration examples.
Available examples:
Notes
- Use a real asset version string or build hash in production.
- The root view should include the frontend assets required to boot your Inertia app.
- If you are using a specific framework, the package is usually best integrated through framework-specific service wiring and middleware registration.
License
MIT
统计信息
- 总下载量: 47
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 1
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-03-17