簡體   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