【问题标题】:How can I redirect from a controller with a value to another controller in laravel?如何从具有值的控制器重定向到 laravel 中的另一个控制器?
【发布时间】:2020-07-24 12:20:38
【问题描述】:

OrderController.php

if (request('payment_method') == 'online') {
    return redirect(route('payments.pay', $order->id));
}

web.php

Route::POST('/pay/{orderId}', 'PublicSslCommerzPaymentController@index')->name('payments.pay');

PublicSslCommerzPaymentController.php

session_start();
class PublicSslCommerzPaymentController extends Controller
{
    public function index(Request $request, $ordId)
    {
       //code...
    }
}

在索引函数中,我需要来自 `OrderController 的订单 ID。

But the Error I am getting

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException 此路由不支持 GET 方法。支持的方法:POST。

【问题讨论】:

  • payments.pay 是 post 方法,当您从控制器重定向时,它称为 get 方法。所以你需要将路线更改为 GET 方法

标签: laravel https controller routes payment-processing


【解决方案1】:

如果你想重定向到命名路由,你可以使用这个:

return redirect()->route('payments.pay', ['orderId' => $order->id]);

如果你想生成重定向到控制器动作,你可以试试这个:

return redirect()->action(
    'PublicSslCommerzPaymentController@index', ['ordId' => $order->id]]
);

【讨论】:

    【解决方案2】:

    只需将您的 web.php 从 POST 方法更改为 GET 方法

    类似的东西

    Route::GET('/pay/{orderId}', 'PublicSslCommerzPaymentController@index')->name('payments.pay');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2018-12-13
      • 2015-07-04
      相关资源
      最近更新 更多