waaseyaa/inertia 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

waaseyaa/inertia

最新稳定版本:v0.1.0-alpha.202

Composer 安装命令:

composer require waaseyaa/inertia

包简介

Server-side Inertia.js v3 protocol adapter for Waaseyaa — optional/experimental L6 surface; see README for the DIR-007 framing.

README 文档

README

Optional / experimental — not the primary workspace UI. Per charter directive DIR-007 (.kittify/charter/charter.md), the committed workspace UI is the Nuxt SPA in packages/admin/. This L6 adapter is supported for distributions that prefer server-driven UI, but is not bundled by waaseyaa/full.

Layer 6 — Interfaces

Server-side Inertia.js v3 protocol adapter. A controller returns Inertia::render($component, $props), producing an InertiaResponse that carries the Inertia page object. InertiaMiddleware reads the X-Inertia-* headers to tell an initial full-page load (HTML via RootTemplateRenderer) from an XHR navigation (JSON page object), and returns 409 + X-Inertia-Location on an asset-version mismatch. OptionalProp / PropResolver defer expensive props so partial reloads (only / except) recompute only requested keys. Implements the foundation contracts InertiaPageResultInterface and InertiaFullPageRendererInterface.

Install

Ships in the waaseyaa/framework metapackage but is not pulled in by waaseyaa/full; add it explicitly: composer require waaseyaa/inertia. Register Waaseyaa\Inertia\InertiaServiceProvider (auto-discovered via extra.waaseyaa.providers) to wire the renderer and HTTP middleware.

Key API

// Inertia — static response factory + shared-prop / version state.
Inertia::setVersion(string $version): void
Inertia::getVersion(): string
Inertia::setRenderer(RootTemplateRenderer $renderer): void
Inertia::getRenderer(): RootTemplateRenderer
Inertia::share(string $key, mixed $value): void
Inertia::render(string $component, array $props, bool $encryptHistory = false, bool $clearHistory = false): InertiaResponse
Inertia::reset(): void

// InertiaResponse implements InertiaPageResultInterface — readonly: component, props,
//   url, version, encryptHistory, clearHistory, preserveFragment, and the
//   deferred/merge/prepend/deepMerge/once prop sets.
public function toPageObject(): array

// InertiaMiddleware — #[AsMiddleware(pipeline: 'http', priority: 20)]
public function __construct(string $version)
public function process(Request $request, HttpHandlerInterface $next): Response

// PropResolver
public static function optional(\Closure $callback): OptionalProp
public function resolve(array $props, array $only = [], array $except = []): array

// RootTemplateRenderer implements InertiaFullPageRendererInterface
public function __construct(?\Closure $template = null, ?ViteAssetManager $assetManager = null)
public function render(array $pageObject): string

// InertiaServiceProvider implements HasMiddlewareInterface
public function register(): void
public function registerWithRoot(?string $root): void
public function middleware(EntityTypeManager $entityTypeManager): array

Usage

Inertia::setVersion('abc123');
Inertia::share('auth', fn() => ['user' => currentUser()]);
$response = Inertia::render('Users/Index', ['users' => [1, 2, 3]]);
$page = $response->toPageObject();

Page props override shared props of the same key; shared closures resolve fresh per render(); toPageObject() always injects props.errors.

统计信息

  • 总下载量: 702
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 11
  • 依赖项目数: 1
  • 推荐数: 1

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: GPL-2.0-or-later
  • 更新时间: 2026-03-19

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固