如何重定向到发布路线
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_online
和 payment_delivery
期望的参数。
你应该考虑使用named routes
您不能从 get 路由重定向到 post 路由。它根本不能只在服务器端完成。您将需要一些中间视图和一些客户端代码。
我其实不能用这个 return redirect()->route('payment_online', ['paymode'=>request('paymode')]);因为第一条路线是提交一些存储在会话中的记录,而第二条路线是打开一个新页面
如果你在同一个控制器中有(payment_online
和payment_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);
【讨论】:
以上是关于如何重定向到发布路线的主要内容,如果未能解决你的问题,请参考以下文章