Laravel Jetstream Inertia共享全球应用程序数据



我想分享我发现的东西,因为那里没有太多信息(我找不到(。Laravel 8与Jetstream Inertia有一些共享对象,如用户、当前路线。。。您可以使用$page变量在组件中访问它们。我需要添加一个菜单数组作为全局变量,但即使在Inertia官方文档中找到了一些信息,我也无法找到它。只是在拉拉维尔喷气式飞机上有所不同。

直到我找到了LaravelJetstream的共享数据中间件(ShareInertiaData(,我才知道如何做到这一点

它是:

  1. 在app/Http/middleware.php中创建一个中间件。我调用了我的ShareInertiaCustomData
<?php
namespace AppHttpMiddleware;
use InertiaInertia;
class ShareInertiaCustomData
{
public function handle($request, $next)
{
Inertia::share([
'menu' => config('menu'),
]);
return $next($request);
}
}
  1. 将其放入app/Http/Kernel.php
protected $middlewareGroups = [
'web' => [
...
AppHttpMiddlewareShareInertiaCustomData::class,
],
];

我希望这会有所帮助,没有人会花几个小时试图弄清楚这一点。

感谢分享!在完成您的步骤时,我确定了类AppHttpMiddlewareHandleInertiaRequests,它是输入自己的页面道具的正确位置。您可以使用";份额;方法添加属性。Inertia关于共享数据的文档中也对此进行了解释。请参阅下面的示例。

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

}

感谢官方Discord频道的人,我发现我也有同样的问题,因为我有一个旧版本的惯性laravel包,它不包括共享功能。

请确保在包含v0.3.0的地方至少使用v0.3.0

相关内容

  • 没有找到相关文章

最新更新