【问题标题】:Laravel Nova multiple resources for same user modelLaravel Nova 同一用户模型的多个资源
【发布时间】:2021-09-20 07:38:45
【问题描述】:

我有一个 laravel + nova 项目。

目前我有一个 USER 模型,带有 'admin' 列,值为 0 或 1。

我使用这个模型登录 nova 仪表盘。

现在,我想在 nova 仪表板中区分管理员用户和普通用户。就像在 nova 仪表板左侧显示两个资源 1) 管理员 2) 用户。

我可以为两个资源使用相同的用户模型吗?

目前它显示了两个名为 Admins 和 Users 的资源,但两者都始终打开管理员列表。根本不是用户列表。

谢谢

【问题讨论】:

    标签: laravel admin laravel-nova


    【解决方案1】:

    由于在您的情况下管理员和用户不是单独的用户,因此请考虑使用 Filters 代替您的 User 资源。

    要回答您的问题,如果您想分别为管理员和用户实施 2 个 Nova 资源,您可以添加覆盖对您的 Nova 资源进行的 index 查询。要覆盖此行为,请将以下代码添加到 Nova 资源:

    App\Nova\Admin.php

    /**
     * Build an "index" query for the given resource.
     *
     * @param  \Laravel\Nova\Http\Requests\NovaRequest  $request
     * @param  \Illuminate\Database\Eloquent\Builder  $query
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public static function indexQuery(NovaRequest $request, $query)
    {
        return $query->where('admin', 1);
    }
    

    以及下面的代码

    App\Nova\User.php

    /**
     * Build an "index" query for the given resource.
     *
     * @param  \Laravel\Nova\Http\Requests\NovaRequest  $request
     * @param  \Illuminate\Database\Eloquent\Builder  $query
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public static function indexQuery(NovaRequest $request, $query)
    {
        return $query->where('admin', 0);
    }
    

    注意:使用上述解决方案,用户仍然可以手动导航到yourwebsite.test/nova/resource/admins/{id}。考虑添加Authorization,这样用户就无法查看管理员(取决于您的用例)。

    【讨论】:

    • 我通过覆盖 indexQuery 尝试了您的解决方案。但是通过同时点击 Admin 和 User Resource,它只会重定向到 Admin 页面( admin index )。不重定向到用户。
    • 您是否创建了两个独立的 Nova 资源?那么App\Nova\Admin.phpApp\Nova\User.php?你改变他们的标签了吗?我自己创建了这些 Nova 资源,对我来说效果很好。
    • 是的,我做到了。即使在左侧,当我单击管理员时,用户和管理员都具有焦点。甚至我设置 public static $displayInNavigation = false;在 Admins.php 中,它从左侧消失,当我单击用户时,它仍然会转到 Admins.php 内容。
    • 您是否更改了他们的标签?你能解释一下吗?我还没有这样做
    • 顺便说一句,我想确认一下,我只有一个“用户”模型。
    猜你喜欢
    • 1970-01-01
    • 2019-11-14
    • 2019-11-25
    • 2019-04-21
    • 2019-11-28
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 2019-02-15
    相关资源
    最近更新 更多