如何重定向到发布路线

Posted

技术标签:

【中文标题】如何重定向到发布路线【英文标题】:How to redirect to a post route 【发布时间】:2021-09-28 20:57:32 【问题描述】:

我想使用重定向而不是 get 重定向到 post 路由。

下面是我的代码

public function resolve_booking(Request $request)
    $request->session()->put('paymode',request('paymode'));

    if(request('paymode') == 'Pay Online')
        return redirect()->route('payment_online');
    else
        return redirect()->route('payment_delivery');
    

Web.php

Route::post('/payment_online',[App\Http\Controllers\MyMessengerController::class, 'payment_online'])->name('payment_online')->middleware('auth');

Route::post('/payment_delivery',[App\Http\Controllers\MyMessengerController::class, 'payment_delivery'])->name('payment_delivery')->middleware('auth');

如您所见,它是一个 post 路由,并且重定向使用 get 路由,我怎样才能使重定向使用 post 路由

【问题讨论】:

也许你可以这样做? return redirect()->route('payment_online', ['paymode'=>request('paymode')]); 有点取决于 payment_onlinepayment_delivery 期望的参数。 你应该考虑使用named routes 您不能从 get 路由重定向到 post 路由。它根本不能只在服务器端完成。您将需要一些中间视图和一些客户端代码。 我其实不能用这个 return redirect()->route('payment_online', ['paymode'=>request('paymode')]);因为第一条路线是提交一些存储在会话中的记录,而第二条路线是打开一个新页面 如果你在同一个控制器中有(payment_onlinepayment_delivery)方法,你可以返回方法而不是返回路由 【参考方案1】:

根据我的经验,如果您想重定向到 POST 路由,您的代码中可能存在一些逻辑错误,或者您错误地使用了 POST。但是,如果您确实需要这样做,this answer 可能会给您一些见解。

【讨论】:

【参考方案2】:

据我了解,您希望通过另一个处理根据条件发送的相同请求的函数来完成该过程

如果是这样,您可以简单地调用该方法并传递请求。

假设你有一个PaymentController,它有三个功能

1. payment_online方法

public function payment_online(Request $request)
  // some code
  return view('view1');

2. payment_delivery 方法

public function payment_delivery (Request $request)
  // some code
  return view('view2');

你可以在3. resolve_booking方法中简单地做到这一点:

public function resolve_booking(Request $request)
    $request->session()->put('paymode',request('paymode'));

    if(request('paymode') == 'Pay Online')
        return $this->payment_online($request);
    else
        return  $this->payment_delivery($request);
    

【讨论】:

以上是关于如何重定向到发布路线的主要内容,如果未能解决你的问题,请参考以下文章

重定向到 React 中的另一条路线时如何传递状态/道具?

Laravel 4如何检查一条路线是不是仅来自另一条路线/重定向?

我如何使用角度路由重定向用户

如何更改我的注销路线以重定向到我的主页

提交表单时重定向到错误的路线

Laravel 重定向到错误的路线