Laravel从controller重定向给出 "方法不支持此路由 "的错误信息。

问题描述 投票:0回答:1

我有一条路由,支持PUT。

Route::put('/products/{id}/cancel/', 'ProductController@cancel')->where('id', '[0-9]+');

当控制器更新产品状态后 应该重定向到另一个路由上。

return redirect('products')->with('success', 'Produto cancelado');

它应该重定向到另一条路由,指向

Route::get('/products', 'ProductController@list')->name('products');

一切都在工作,直到重定向.产品更新,但重定向给出了一个方法不支持的错误。

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
The PUT method is not supported for this route. Supported methods: GET, HEAD

我还尝试了以下重定向。

return redirect('/products/')->with('success', 'Produto cancelado');

return redirect()->route('products')->with('success', 'Produto cancelado');

PUT方法是如何传递的?重定向中要不要明确调用GET方法?

我应该如何解决这个问题?


EDIT:我是从HTTPrequest发送PUT的。所以我返回的是JS函数。我想转发到一个接受with->的视图。


EDIT2:我可以返回一个视图,但它只出现在开发者工具的网络>预览中。

return view('pages.products')->with('success', 'Produto cancelado');

但我显然需要它在窗口中。

我可以在 js 中重定向,但这样一来,我就会错过在部分刀片中显示 flash 消息。


我不知道该怎么做。

我不知道该怎么做。

laravel redirect methods routes put
1个回答
0
投票

错误不在GET方法,错误说不支持put方法。

Route::put('/products/{id}/cancel/', 'ProductController@cancel')->where('id', '[0-9]+');

如果你尝试这样做 domainname.com/products/5/cancel 那么就定义为下面这个样子。

Route::get('products/{id}/cancel', 'ProductController@cancel')->where('id', '[0-9]+');

0
投票

最后我做了一些作弊。

我添加了一个新的PUT路由

Route::put('/products', 'ProductController@list')->name('products_put');

控制器返回,

return redirect()->route('products')->with('success', 'Produto cancelado',200);

然后由response处理程序进行作弊。

document.write(this.responseText);
window.history.pushState('products', 'eBaw · online shopping', '/products');
© www.soinside.com 2019 - 2024. All rights reserved.