【问题标题】:How to disable personal teams in Laravel / Jetstream when using Inertia?使用 Inertia 时如何在 Laravel / Jetstream 中禁用个人团队?
【发布时间】:2021-12-21 17:36:32
【问题描述】:

我在这里关注了一篇文章:

https://devlan.io/disabling-personal-teams-in-laravel-8-and-jetstream-1fd083593e08

基本上是在 Laravel / Jetstream 中禁用个人团队。现在文章给出了如何使用 Livewire 实现这一点的示例,但我使用的是 Inertia。 Livewire 模板需要对此进行更改:

@if (Laravel\Jetstream\Jetstream::hasTeamFeatures()

到这里:

@if (Laravel\Jetstream\Jetstream::hasTeamFeatures() && Auth::user()->isMemberOfATeam())

如何在 Inertia 中实现这一点?我浏览了网络,但因为我是这个堆栈的新手,所以我完全被难住了。

提前致谢。

【问题讨论】:

    标签: laravel vue.js inertiajs jetstream


    【解决方案1】:

    这是 Blade 模板中的条件。由于 Inertia 不适用于 Blade,而是使用一些 JavaScript 框架(Vue、React、Svelte),您需要做的是在 Laravel 端(控制器、中间件)的某处运行此条件并设置一个变量将传递您的客户端组件以有条件地呈现团队的 html 内容。

    如果您想让应用程序中的所有页面都可以使用此标志,您可以通过HadleInertiaRequests 中间件来实现。

    class HandleInertiaRequests extends Middleware
    {
        public function share(Request $request)
        {
            return array_merge(parent::share($request), [
                'has_teams' => Laravel\Jetstream\Jetstream::hasTeamFeatures() && Auth::user()->isMemberOfATeam()
            ]);
        }
    }
    

    然后,您的组件,您可以使用该变量来呈现团队部分或不呈现团队部分(使用 Vue 的示例):

    <div v-if="$page.props.has_teams">
     <!-- Teams... -->
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-11
      • 2021-10-04
      • 2021-02-10
      • 2022-10-25
      • 2021-04-30
      • 2021-02-27
      • 2022-10-15
      • 2023-01-21
      相关资源
      最近更新 更多