Yii2 adapter for the framework-agnostic Inertia.js PHP protocol core.

Maintainers

Package info

github.com/yii2-extensions/inertia

pkg:composer/yii2-extensions/inertia

Transparency log

Statistics

Installs: 2 463

Dependents: 4

Suggesters: 0

Stars: 3

Open Issues: 0

0.2.0 2026-08-24 17:07 UTC

This package is auto-updated.

Last update: 2026-08-24 17:33:02 UTC


README

Yii Framework

Inertia for Yii2


PHPUnit Mutation Testing PHPStan Security

Connect Yii requests, responses, views, sessions, and redirects to the Inertia protocol

Architecture

The packages have deliberately separate responsibilities:

  • php-forge/inertia implements the framework-agnostic protocol, page model, prop resolution, headers, redirects, and result objects.
  • yii2-extensions/inertia adapts Yii2 application state to that core and maps its results back to Yii responses.
  • php-forge/vite provides optional, framework-agnostic Vite manifest and development server support.

This adapter does not contain Vite integration or framework-specific JavaScript client packages.

Installation

composer require yii2-extensions/inertia:^0.2

Register its bootstrap class:

return [
    'bootstrap' => [\yii\inertia\Bootstrap::class],
];

The adapter installs php-forge/inertia as its protocol dependency.

Quick start

use yii\inertia\Inertia;
use yii\web\Controller;
use yii\web\Response;

final class SiteController extends Controller
{
    public function actionIndex(): Response
    {
        return Inertia::render(
            'Dashboard',
            ['stats' => ['visits' => 42]],
        );
    }
}

The convenience controller exposes the same operation as $this->inertia():

use yii\inertia\web\Controller;
use yii\web\Response;

final class SiteController extends Controller
{
    public function actionIndex(): Response
    {
        return $this->inertia('Dashboard', ['stats' => ['visits' => 42]]);
    }
}

Configuration

use yii\inertia\Manager;

return [
    'bootstrap' => [\yii\inertia\Bootstrap::class],
    'components' => [
        'inertia' => [
            'class' => Manager::class,
            'id' => 'app',
            'rootView' => '@app/views/layouts/inertia.php',
            'version' => static function (): string {
                $path = dirname(__DIR__) . '/public/build/manifest.json';

                return is_file($path) ? (string) filemtime($path) : '';
            },
            'shared' => [
                'app.name' => static fn(): string => Yii::$app->name,
            ],
        ],
    ],
];

Version callbacks may accept the current yii\web\Request. Prop callbacks are framework-neutral zero-argument closures and are resolved by php-forge/inertia.

Prop factories

The yii\inertia\Inertia facade delegates prop creation directly to the core:

return Inertia::render(
    'Dashboard',
    [
        'stats' => Inertia::always($stats),
        'users' => Inertia::defer(static fn(): array => User::find()->asArray()->all()),
        'activity' => Inertia::optional(static fn(): array => $activity),
        'items' => Inertia::merge($items)->append('data', 'id'),
        'countries' => Inertia::once(static fn(): array => $countries)->as('countries-v1'),
    ],
);

The facade also provides deepMerge() and scroll(). See the php-forge/inertia documentation for protocol and prop semantics.

Validation and flash messages

The adapter reads the session flash key configured by Manager::$errorFlashKey and passes it to the core as props.errors. Other flashes are emitted in the top-level flash page field. Flashes are consumed only after a page result is created, so version conflicts and failed page creation preserve them.

if (!$model->validate()) {
    Yii::$app->session->setFlash('errors', $model->getErrors());

    return $this->redirect(['create']);
}

Yii::$app->session->setFlash('success', 'Record created.');

return $this->redirect(['view', 'id' => $model->id]);

CSRF protection

Use yii\inertia\web\Request for Inertia's cookie-to-header CSRF flow:

'request' => [
    'class' => \yii\inertia\web\Request::class,
    'cookieValidationKey' => 'your-secret-key',
],

Vite

Install and configure php-forge/vite when the application uses Vite. Asset discovery and development-server behavior are intentionally independent of this Yii2 adapter.

Documentation

Package information

PHP Yii 22.0.x Latest Stable Version Total Downloads

Project status

Codecov PHPStan Level Max Quality StyleCI

Our social networks

Follow on X Follow on Facebook Join our Subreddit Join on Telegram

License

License