Как передать данные в root template (inertia)?

Для передачи данных в главный шаблон (root template) при использовании Inertia в Laravel, вам понадобится создать Middleware и зарегистрировать его в глобальном HTTP-ядре.

Во-первых, создайте новый Middleware с помощью команды Artisan:

php artisan make:middleware ShareInertiaData

Откройте файл ShareInertiaData.php, который находится в директории app/Http/Middleware, и добавьте следующий код:

<?php

namespace AppHttpMiddleware;

use Closure;
use InertiaInertia;

class ShareInertiaData
{
    public function handle($request, Closure $next)
    {
        Inertia::share([
            // Ваши данные, которые вы хотите передать в главный шаблон
        ]);

        return $next($request);
    }
}

После этого вам нужно зарегистрировать созданный Middleware в классе Kernel приложения. Откройте файл app/Http/Kernel.php и добавьте 'shareInertiaData' в массив $middlewareGroups:

protected $middlewareGroups = [
    'web' => [
        // Другие Middleware
        AppHttpMiddlewareShareInertiaData::class,
    ],
];

После внесения изменений рекомендуется очистить кэш конфигурации, используя команду:

php artisan config:cache

Теперь вы можете передавать данные из любого контроллера в главный шаблон. Откройте контроллер, из которого вы хотите передать данные, и используйте метод inertia() для возврата данных вместе с представлением:

public function index()
{
    $data = [
        'user' => Auth::user(),
        'notifications' => // Получите уведомления пользователя или любые другие данные,
    ];

    return inertia('Index', $data);
}

В главном шаблоне (который обычно называется app.blade.php или layout.blade.php) вы можете получить доступ к переданным данным, используя объект $page:

<!DOCTYPE html>
<html>
<head>
    <!-- Заголовок, мета-теги, стили, скрипты и т.д. -->
</head>
<body>
    <div id="app" data-page="{{ json_encode($page) }}"></div>
    <script src="{{ mix('/js/app.js') }}"></script>
</body>
</html>

Теперь данные, переданные из вашего контроллера, будут доступны в JavaScript-части вашего приложения через глобальную переменную window.

Надеюсь, это помогло! Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.