【问题标题】:Laravel nova - redirect from DashboardLaravel nova - 从仪表板重定向
【发布时间】:2019-06-22 21:55:42
【问题描述】:

我想从我的Laravel Nova 应用程序中删除仪表板。

我发现从侧边栏菜单中删除它很容易 - 只需评论 /views/dashboard/navigation.blade.php 代码。

但是,我想添加一个重定向逻辑(登录页面取决于用户角色),因此当导航到/ 时,用户将被重定向到与他对应的资源或工具。

(我已经实现了登录后重定向(https://stackoverflow.com/a/54345123/1039488)

我试着用卡片来做,但看起来这不是正确的解决方案。

知道我可以在哪里放置重定向逻辑吗?

【问题讨论】:

  • 你有接受的答案吗?

标签: laravel laravel-nova


【解决方案1】:

目前这种方法有效:

给 NovaServiceProvider.php 添加启动方法:

Nova::script('menuFix', __DIR__.'/../../resources/js/fixMenu.js');

使用以下内容创建文件 fixMenu.js:

if (location.pathname == '/' || location.pathname == '/dashboards/main'){
    location.href = '/whereToRedirect'
}

【讨论】:

    【解决方案2】:

    只是我自己想通了。在 Routes/web.php 文件中,添加重定向路由:

    Route::redirect('/','/resources/{resource_name}');
    

    其中 {resource_name} 是资源的复数形式。例如,'/resources/posts'。

    在您的情况下,您可能希望重定向到您自己的控制文件,其中可以放置重定向逻辑。

    Route::get('/', 'YourController@rootRedirectLogic');
    

    然后在控制器YourController中,添加方法:

    public function rootRedirectLogic(Request $request) {
        // some logic here
        return redirect()->route('YourRoute');
    }
    

    其中 'YourRoute' 是您要将用户发送到的路线的名称。

    (在 dillingham 的评论中找到此解决方案的线索:https://github.com/laravel/nova-issues/issues/393

    【讨论】:

    • 它不起作用。它覆盖了“路线”中的重定向
    • @Tudor-RaduBarbu 尝试在文件的前面移动路线。 Laravel 使用第一个匹配的路由,我发现 Resource:: 路由通常会阻塞它下面的更具体的路由。
    【解决方案3】:

    我发现了这个链接:Laravel Nova - Point Nova path to resource page

    不确定这是一个永久的解决方案,但编辑 LoginController.php 就可以了。

    public function redirectPath()
    {
        return Nova::path().'/resources/***<resource_name>***;
    }
    

    **更改为您自己的资源名称

    【讨论】:

      猜你喜欢
      • 2020-05-19
      • 2019-03-27
      • 2019-02-16
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 2021-01-09
      • 2021-12-14
      相关资源
      最近更新 更多