Lendwye
@Lendwye

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

Добрый день.
Есть приложение, работает на inertia.
По определённой причине надо передать данные в root template (в blade'овский файл), в документации такой возможности не нашёл.
  • Вопрос задан
  • 132 просмотра
Решения вопроса 1
@arti39
В Inertia.js, данные можно передать в root template (blade файл) с помощью двух переменных: page.props и page.asset.

Переменная page.props содержит объект, который будет преобразован в JSON и передан внутрь JS-функции Inertia.merge. Эта функция обновляет существующие данные на странице с помощью переданных данных.

Например, чтобы передать данные о пользователе в root template, можно выполнить следующий код в контроллере:

public function index()
{
    $user = Auth::user();

    return Inertia::render('Home', [
        'user' => $user
    ]);
}

Затем в blade-шаблоне можно использовать переданные данные следующим образом:

<!DOCTYPE html>
<html>
    <head>
        <!-- ... -->
    </head>
    <body>
        @inertia

        <script>
            // Объект пользователя, переданный из контроллера
            const user = @json($page.props.user);
        </script>
    </body>
</html>

Переменная page.asset используется для передачи пути к JS-файлу, который должен быть загружен на страницу. Этот путь должен быть относительным пути к файлу из директории public, например:

return Inertia::render('Home', [
    'user' => $user,
    'asset' => 'js/app.js'
]);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы