gpt4 book ai didi

Laravel Jetstream Inertia 共享全局应用数据

转载 作者:行者123 更新时间:2023-12-03 13:39:55 25 4
gpt4 key购买 nike

我想分享一些我发现的东西,因为那里没有太多信息(我找不到)。
带有 Jetstream Inertia 的 Laravel 8 有一些共享对象,例如用户、当前路由……您可以使用 $page 变量在组件中访问它们。
我需要添加一个菜单数组作为全局变量,但无法弄清楚,即使在官方 Inertia 文档中找到了一些信息。只是在 Laravel Jetstream 中有所不同。
直到我找到了 Laravel Jetstream 的共享数据中间件(ShareInertiaData),我才知道怎么做。
这是:

  • 在 app/Http/Middleware.php 中创建一个中间件。我叫我的 ShareInertiaCustomData。
  • <?php

    namespace App\Http\Middleware;

    use Inertia\Inertia;

    class ShareInertiaCustomData
    {
    public function handle($request, $next)
    {
    Inertia::share([
    'menu' => config('menu'),
    ]);

    return $next($request);
    }
    }
  • 放在app/Http/Kernel.php
  •     protected $middlewareGroups = [
    'web' => [
    ...
    \App\Http\Middleware\ShareInertiaCustomData::class,
    ],
    ];
    我希望这会有所帮助,没有其他人需要花费数小时来解决这个问题。

    最佳答案

    感谢分享!在执行您的步骤时,我确定了类 \App\Http\Middleware\HandleInertiaRequests ,这是进入自己的页面 Prop 的正确位置。您可以使用“共享”方法来添加您的属性。这在 Inertia documentation about Shared Data 中也有解释。 .请看下面的例子。

    /**
    * Defines the props that are shared by default.
    *
    * @see https://inertiajs.com/shared-data
    * @param \Illuminate\Http\Request $request
    * @return array
    */
    public function share(Request $request)
    {
    return array_merge(parent::share($request), [
    'current_topic' => Auth::user() ? Auth::user()->currentTeam->currentTopic : null
    ]);
    }
    }

    关于Laravel Jetstream Inertia 共享全局应用数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64848974/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com