繁体   English   中英

在 laravel nova 应用程序中重定向到自定义工具 url

[英]Redirect to custom tool url in a laravel nova application

  • Laravel 版本:7
  • 新星版本:3
  • PHP 版本:7.4
  • 数据库驱动程序和版本:
  • 操作系统和版本:MacOS
  • 浏览器类型和版本:Chrome
  • 复制库: https://github.com/###/###

描述:

我在检查中间件中的条件后尝试重定向用户,我尝试使用

return redirect('/admin/paddle-subscription');

但它不起作用,它只是重定向页面并在浏览器 url 中正确显示,但在屏幕上显示 404 错误,看起来 nova 使用 vue.js 它正在创建某种错误。

我一直在阅读 laracast https://laracasts.com/discuss/channels/nova/nova-resource-route-redirect中的一些帖子,我更清楚它需要一种特殊的重定向方式。

我努力了

     return redirect()->action('\Laravel\Nova\Http\Controllers\RouterController@show', ['resource' => '/admin/paddle-subscription']);

它不起作用,我应该如何正确重定向?

谢谢

在全新的 Nova 安装上重现该问题的详细步骤:

尝试这个:

添加你的新星动作

public function handleRequest(\Laravel\Nova\Http\Requests\ActionRequest $request)
{
    parent::handleRequest($request);

    return Action::redirect('/admin/paddle-subscription');
}

您可以通过首先在后端创建路由来做到这一点,以便 Laravel 知道该页面存在。 使用 Nova 的RouterController@show操作,就像在您的 Laracast 示例中一样,并确保将所有 Nova 中间件应用到它。

app/Providers/NovaServiceProvider.php中为您的routes()方法添加自定义路由:

    protected function routes()
    {
        Nova::routes()
            ->withAuthenticationRoutes()
            ->withPasswordResetRoutes()
            ->register();

        Route::domain(config('nova.domain', null))
            ->middleware(['web'])
            ->as('nova.')
            ->prefix(Nova::path())
            ->group(function () {
                Route::get('/admin/paddle-subscription', [\Laravel\Nova\Http\Controllers\RouterController::class, 'show'])
                    ->middleware(config('nova.middleware', []));
            });
    }

在您的中间件中,您现在可以重定向到该路由并且页面将正确呈现:

public function handle(Request $request, Closure $next)
{
    if ($foo === $bar) {
        return new \Illuminate\Http\RedirectResponse('/admin/paddle-subscription');
    }

    return $next($request);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM