定制 phpsoftbox/inertia 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

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

phpsoftbox/inertia

Composer 安装命令:

composer require phpsoftbox/inertia

包简介

Inertia.js adapter for the PhpSoftBox framework

README 文档

README

Минимальный серверный адаптер Inertia.js для PhpSoftBox.

Возможности

  • JSON‑ответы по X-Inertia.
  • HTML‑ответы с root‑view для первого захода.
  • Middleware для проверки версии ассетов и заголовка Vary: X-Inertia.

Пример

$response = $inertia->render('Home', [
    'title' => 'Inertia App',
]);

Метаданные страницы

Можно задавать title, description, keywords через сервис PageMeta. Данные попадут в props.meta и в HTML‑теги на первом рендере.

use PhpSoftBox\Inertia\Page\PageMeta;

$meta->setTitle('Панель управления')
    ->setDescription('Админ‑панель проекта')
    ->setKeywords(['admin', 'dashboard']);

return $inertia->render('Dashboard');

Breadcrumbs

use PhpSoftBox\Inertia\Page\Breadcrumbs;

$breadcrumbs
    ->add('Главная', '/')
    ->add('Пользователи', '/users')
    ->add('Профиль', null, true);

return $inertia->render('Users/Show');

Menu

use PhpSoftBox\Inertia\Page\Menu;
use PhpSoftBox\Inertia\Page\MenuItem;
use PhpSoftBox\Inertia\Page\MenuMatchMode;

$menu = new Menu();
$menu->add(
    (new MenuItem('Dashboard', '/', 'dashboard', 'dashboard'))
        ->withMatchMode(MenuMatchMode::EQUALS),
);

$menu->add(
    (new MenuItem('Промо', null, 'promo', 'promo'))
        ->setChildren([
            new MenuItem('Промокоды', '/promo/promocodes', 'promocode', 'promocode'),
        ]),
);

Tabs

use PhpSoftBox\Inertia\Page\Tabs;

$tabs
    ->setActiveKey('profile')
    ->add('Профиль', 'profile', '/profile')
    ->add('Пароль', 'password', '/profile/password');

return $inertia->render('Profile/Show');

SSR (заготовка)

SSR опционален и выключен по умолчанию. Для интеграции нужен свой рендерер, реализующий SsrRendererInterface.

use PhpSoftBox\Inertia\Ssr\SsrRendererInterface;

final class MySsrRenderer implements SsrRendererInterface
{
    public function render(ServerRequestInterface $request, InertiaPage $page): ?SsrResponse
    {
        // Вернуть head/body, либо null если SSR не нужен для этого запроса.
    }
}

В конфиге Inertia:

return [
    'ssr' => [
        'enabled' => env('INERTIA_SSR', false),
    ],
];

Если SSR включён и доступен, view получает переменную $ssr: ['head' => string[], 'body' => string]. Дефолтный view в AppBackend уже умеет вставлять эти данные.

Разделение SSR по хосту/пути

Решение остаётся за вашим SsrRendererInterface — можно включать SSR только для публичного сайта и выключать для админки/кабинета.

public function render(ServerRequestInterface $request, InertiaPage $page): ?SsrResponse
{
    $host = $request->getUri()->getHost();
    $path = $request->getUri()->getPath();

    if ($host === 'admin.example.local' || str_starts_with($path, '/cabinet')) {
        return null; // SSR не нужен.
    }

    return $this->renderFromNode($page);
}

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-02-08

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固